-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>
[cURL HTTPSサイトへのログイン]可能な複製(http://stackoverflow.com/questions/8318041/curl-login-to-https-site) –
@bub:質問は似ていますが、私は試しましたそこの解決策は私のために問題を解決しませんでした。ここでの質問は、他の質問と重複しているわけではありません。なぜなら、その他の質問への回答は私の出発点なのでです。 – Ernst
ログイン用のいくつかの投稿フィールドが欠落している場合や、別の一般的な問題として、User-Agent文字列を送信できない場合があります。出力を見ずに言うのは難しいですし、欠けているものがあるかどうかを知るログインページのソースです。 – drew010