php curl POST cookie并发症

时间:2013-12-27 17:30:58

标签: php visual-studio-2012 curl http-post

我正在使用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);

       }
   }

3 个答案:

答案 0 :(得分:0)

登录后检查页面中的注销事项。大多数情况下页面显示Logout选项或类似的东西。所以,在html源代码中可能会出现类似的内容:

>Logout<
>Signout<
<a href="http://example.com/logout"

答案 1 :(得分:0)

不是在实际的卷曲连接中搜索true / false,而是搜索结果以查找成功时会出现的字符串:

if (strpos($result,'Welcome') ) {
 ...
}

答案 2 :(得分:0)

原来我没有收到回复,因为我不小心输入了$ curl而不是$ ch。 去图。

谢谢大家,踩到后来回来做了伎俩。