2017-01-25 8 views
-2

この質問はthis older questionに似ています。PHPをhttpsサイトで実際に動作させるにはどうすればよいですか?

解決策は私にとってはうまくいくようでしたが、ログインしていないという結果が得られました。私は2番目のリクエストでページを取得しますが、ユーザーではありません。 変更する必要はありますか?ここで コードは次のとおりです。

<?php 
$urlini='https://www.example.com/login'; 
$url='https://www.example.com/page-12345'; 

$ch = curl_init(); 
$fp = fopen(dirname(__FILE__).'/errorlog.txt', 'w'); 
curl_setopt($ch, CURLOPT_POST,true); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_STDERR, $fp); 
curl_setopt($ch, CURLOPT_URL, $urlini); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/certificate.pem"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('email' => '[email protected]' , 'password' => 'password'))); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$store = curl_exec($ch); 

curl_setopt($ch, CURLOPT_URL, $url); 
$response = curl_exec($ch); 
curl_close($ch); 
echo $response; 
?> 

Iの代わり$responseをエコーは、$storeをエコーするとき、私は、ユーザー名がフォームで満たされていることがわかりますが、パスワードではありません。サイトのログインフォームのコードは次のとおりです。

<div class="form_wrapper"><div class="form" id="login_form"> 
<span class="form_title hidden-xs">Log in</span><input id="email" name="id" type="email" placeholder="Email address" class="validate[required,custom[email]]"/> 
<input id="password" name="password" type="password" placeholder="Password" class="validate[required,minSize[5],custom[passwordLegalChars]]"/><a 
id="login_button" class="css_button css_button_big css_button_default" role="button" tabindex="0" >Log in</a> 
+0

[cURL HTTPSサイトへのログイン]可能な複製(http://stackoverflow.com/questions/8318041/curl-login-to-https-site) –

+0

@bub:質問は似ていますが、私は試しましたそこの解決策は私のために問題を解決しませんでした。ここでの質問は、他の質問と重複しているわけではありません。なぜなら、その他の質問への回答は私の出発点なのでです。 – Ernst

+0

ログイン用のいくつかの投稿フィールドが欠落している場合や、別の一般的な問題として、User-Agent文字列を送信できない場合があります。出力を見ずに言うのは難しいですし、欠けているものがあるかどうかを知るログインページのソースです。 – drew010

答えて

0

私はこの問題を解決できました。 ログインページは、最初にいくつかのボット防止サイトにログインしたことが判明しました。永続的なログを有効にしてdeveloper-> inspector-> networkを使用すると、実際のログインURLがわかりました。それに応じて$urliniを変更した後、コードが機能しました。

関連する問題