リンクのクリックによる自動ログインが必要なクライアントのプロジェクトに取り組んでいます。
次のコードでこれを行うためにハンドシェイク ページを使用しています。
$username = "admin";
$password = "blog";
$url = "http://wordpressblogURL/";
$cookie = "cookie.txt";
$postdata = "log=" . $username . "&pwd=" . $password . "&wp-submit=Log%20In&redirect_to=" . $url . "blog/wordpress/wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "blog/wordpress/wp-login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "blog/wordpress/wp-login.php");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
exit;
これはうまくいきます。それは私を素晴らしいものにログインさせます。
問題は、WordPress のキーが URL から外れていると私が信じていることです。
詳しく説明すると、ハンドシェイク ページ (ログインするページ) は "blog" ディレクトリにあり、WordPress アプリケーションは "blog" ディレクトリ内の "wordpress" ディレクトリにあります。ブラウザの URL には..blog/handshake.php
. ただし、ブラウザ ウィンドウには WordPress の管理セクションがあります。../blog
ディレクトリにある必要があるときにURL がディレクトリにあるため、WordPress の管理リンクが正しく機能しません..blog/wordpress/wp-admin
。
cURLでブラウザの URL が実際のページを反映するようにする方法はありますか?
代わりに FSockOPen を使用する必要がありますか?