0

curlからサイトにログインするためのphpスクリプトを作成しました。以下は私のコードです:

<?php
// INIT CURL
$ch = curl_init();

// SET URL FOR THE POST FORM LOGIN
curl_setopt($ch, CURLOPT_URL, 'http://wordpress.dev/wp-login.php');

// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'log=admin&pwd=admin');

// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
# not to print out the results of its query.
# Instead, it will return the results as a string return value
# from curl_exec() instead of the usual true/false.
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

// EXECUTE 1st REQUEST (FORM LOGIN)
$store = curl_exec ($ch);
var_dump($store);exit;

// CLOSE CURL
curl_close ($ch);

?>

正しいパスワードを指定するとstring() "が表示され、間違ったパスワードを指定するとログインページにリダイレクトされます。ログインが成功したことを確認するにはどうすればよいですか。

4

4 に答える 4

2

応答コードも確認する必要があります。これはあなたを助けるかもしれません。

$contents = curl_exec($ch);
$httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);

var_dump($httpcode);
var_dump($contents);

ほとんどの場合、HTTP コード 200 は有効な認証です。

于 2013-02-12T12:03:58.477 に答える
1

curl_exec()TRUE成功またはFALSE失敗時に戻ります

<?php 

     //execute the request (the login)
     $store = curl_exec($ch);    

     if($store){ //check for true/false
         //Logged in
     }else{
         //Login failed
     }

?>

アップデート:

HTTPS を使用している場合は、これを追加します。

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

更新 2:

これを追加:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
于 2013-02-12T11:57:54.093 に答える
0

確認すると$store、成功するとtrueが返され、それ以外の場合はfalseが返されます。

curlを使用してログインの応答を保存しますか?。それがあなたの問題を解決すると思います。

于 2013-02-12T11:56:00.517 に答える
0

ステータス コードに注意する必要があります。

ログインが検証されていない場合でも、curl_exec は true を返します。

これは単に、curl リクエストがエラーなしで実行されたことを意味します。

ステータスコードが「200」であることを確認してください。

于 2014-01-17T09:48:33.507 に答える