我正在使用php cURL来处理登录网站的POST请求。有没有办法确定登录失败的时间?我通过使用正确的凭据成功登录进行实验,并且$ ch返回true,但是当我使用不正确的凭据时,$ ch也返回true。我知道凭据不正确(通过浏览器),它会将我重定向回主登录页面。
有什么想法吗?
function httpPost($url, $params)
{
try {
//open connection
$ch = curl_init($url);
//set the url, number of POST vars, POST data
// curl_setopt($ch, CURLOPT_COOKIEJAR, "cookieFileName");
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//execute post
$response = curl_exec($ch);
extract($_POST);
echo $response;
//close connection
curl_close($ch);
if (FALSE === $ch)
throw new Exception(curl_error($ch), curl_errno($ch));
// ...process $ch now
}
catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
}
答案 0 :(得分:0)
登录后检查页面中的注销事项。大多数情况下页面显示Logout选项或类似的东西。所以,在html源代码中可能会出现类似的内容:
>Logout<
>Signout<
<a href="http://example.com/logout"
答案 1 :(得分:0)
不是在实际的卷曲连接中搜索true / false,而是搜索结果以查找成功时会出现的字符串:
if (strpos($result,'Welcome') ) {
...
}
答案 2 :(得分:0)
原来我没有收到回复,因为我不小心输入了$ curl而不是$ ch。 去图。
谢谢大家,踩到后来回来做了伎俩。