我正在尝试使用cURL从同一域上的其他页面登录PunBB论坛.
登录时,cURL会被执行,其初始响应是论坛的“成功登录”页面.但是,当点击该论坛中的任何链接时,没有设置cookie,我已经注销了.
经过一番调查后,我的cookiejar文件提到了登录所需的cookie.如果我在浏览器中手动创建此cookie及其值,我已成功登录并且一切正常.因此存储的cookie值是正确的.
然而,在cookiejar中包含我的cookie名称/值的行被注释掉了.
第一个问题:为什么?@H_301_8@第二:如何防止这种行为?
这是我的饼干:
# Netscape HTTP Cookie File # http://curl.haxx.se/rfc/cookie_spec.html # This file was generated by libcurl! Edit at your own risk. www.example.com FALSE / FALSE 0 PHPSESSID 3d7oe6vt3blv3vs3ea94nljcs7 #HttpOnly_www.example.com FALSE / FALSE 1340974408 forum_cookie_e19209 MnwyYWQ4OGViNDI2NjE5MWEwMGZiNGZkNDFmZDY5ZDZhYjM5OTA5NDVjfDEzNDA5NzQ0MDh8OTU0NTExOGZhNWNlNGY5OGMzZDk3MmE0NDlmMWRjNzM3ZjI1NzMxOA%3D%3D
这是我的卷毛电话:
function forumLogin() { $loginFields = array('req_username' => $_REQUEST['username'],'req_password' => $_REQUEST['password'],'form_sent' => "1" ); //and so on $login = getUrl('http://www.example.com/manager/forum/login.PHP','post',$loginFields); return $login; } function getUrl($url,$method='',$vars='') { $ch = curl_init(); if ($method == 'post') { curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$vars); } curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,0); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt'); curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt'); $buffer = curl_exec($ch); curl_close($ch); return $buffer; } // successful login so reset fail count and update key values if(isset($_SESSION['mgrValidated'])) { $sql = "update $dbase.`".$table_prefix."user_attributes` SET Failedlogincount=0,logincount=logincount+1,lastlogin=thislogin,thislogin=".time().",sessionid='$currentsessionid' where internalKey=$internalKey"; $rs = MysqL_query($sql); var_dump( forumLogin() ); } exit;
一行中的#Httponly_前缀不是注释.这是一个神奇的字符串告诉浏览器/客户端有问题的cookie是
httponly. curl会理解并相应地处理它.
原文链接:https://www.f2er.com/php/136187.html我不理解点击事物的部分,因为我没有看到它与你的卷曲使用程序有什么关系或相关.