0

我已经编写了一个 php 脚本来从 curl 登录到一个站点。下面是我的代码:

<?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

您应该注意状态码。

即使您的登录未通过验证,curl_exec 也会返回 true。

它只是意味着 curl 请求执行没有错误..

确保状态码是“200”..

于 2014-01-17T09:48:33.507 回答
0

你可以检查它,$store它会在成功时返回 true,否则返回 false。

检查使用 curl 存储登录响应?. 认为它会解决你的问题。

于 2013-02-12T11:56:00.517 回答