web-dev-qa-db-ja.com

CURLを介したログインセッションの作成

次のコードを使用して私はいくつかの問題を経験しました:ログインはうまくいきますが私がクリックするダッシュボードのすべてのリンクは404 not foundページにたどります。ワーキングセッションは作成されないようですか?

$username="admin";
$password="admin";
$url="http://www.yourdomain.com/";
$cookie="cookie.txt";

$postdata = "log=". $username ."&pwd=". $password ."&wp-submit=Log%20In&redirect_to=". $url ."wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "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, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "wp-admin/");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
exit;
1
flowdee

そのセッションの問題がわからない、私はそれがWordPressのダッシュボードが相対リンクを使用しているという事実に関係していると思う。

手っ取り早い修正は追加することです。

curl_setopt($ch,CURL_COOKIEFILE, '');  // Enables session support

次に、実際のダッシュボードの場所へのカールハンドラのリダイレクトを閉じた後にこれを追加します。

curl_close($ch);
header('location: blog/wordpress/wp-admin/');
die();
3
Bainternet

@Bainternet ...良い答え、私はあなたの方法を試してみました、そして私がコメントしたいいくつかのエラーがあります

curl_setopt($ ch、CURLOPT_COOKIEFILE、 'cookie.txt'); OPTを逃した

そしてリダイレクトのためにそれはあなたが使用できることを避けるために上記のURLを追加しています

curl_setopt($ ch、CURLOPT_POSTFIELDS、 'log ='。urlencode($ log)。 '&pwd ='。urlencode($ password)。 '&redirect_to ='。urlencode($ redirect));

ここでuはWordpressの管理ページの任意の部分にあなたの必要性に従ってリダイレクトURLを提供することができます。

0
abby37