我正在尝试使用cURL从同一域上的其他页面登录PunBB论坛.
登录时,cURL会被执行,其初始响应是论坛的"成功登录"页面.但是,当点击该论坛中的任何链接时,没有设置cookie,我已经注销了.
经过一番调查后,我的cookiejar文件提到了登录所需的cookie.如果我在浏览器中手动创建此cookie及其值,我已成功登录并且一切正常.因此存储的cookie值是正确的.
然而,在cookiejar中包含我的cookie名称/值的行被注释掉了.
第一个问题:为什么?第二:如何防止这种行为?
这是我的饼干:
# 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
Run Code Online (Sandbox Code Playgroud)
这是我的卷毛电话:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5661 次 |
| 最近记录: |