Php 使用curl登录、保存cookie文件并使用cookie访问页面失败

Php 使用curl登录、保存cookie文件并使用cookie访问页面失败,php,cookies,curl,login,Php,Cookies,Curl,Login,我对PHP cURL登录表单有问题。我已经成功地登录了该站点并在文件中写入了我的cookie,然后我再次使用相同的cookie访问该页面,但它不起作用。。。请帮忙 我的登录代码如下: $linkP = "https://www.something.com/login.php"; $postData = array( 'user' => 'something', 'pass' => 'something' ); $userAgent = 'Mozilla/5.0 (Wi

我对PHP cURL登录表单有问题。我已经成功地登录了该站点并在文件中写入了我的cookie,然后我再次使用相同的cookie访问该页面,但它不起作用。。。请帮忙

我的登录代码如下:

$linkP = "https://www.something.com/login.php";
$postData = array(
    'user' => 'something',
    'pass' => 'something'
);
$userAgent = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36';
$header = true;
$cookie = $_SERVER['DOCUMENT_ROOT'].'/tmp/cookie';

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_URL, $linkP);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
$result = curl_exec($ch);
curl_close($ch);
我的cookie文件内容如下:

# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
.something.com  TRUE    /   FALSE   0   stas    985mupc786rg6crikotnfj3oj3
我再次访问的代码是:

$cookie=$_SERVER['DOCUMENT_ROOT'].'/tmp/cookie';
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $link);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
$html = curl_exec($ch);
echo $html;

另一件有趣的事情是,如果我用浏览器手动登录,并从cookie中获取哈希值,然后用生成的cookie替换它,那么它就可以正常工作了。我看不出有什么意义。区别在哪里?

尝试添加这两个
curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt')
curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt')我已经有了这2个,cookiejar用于创建cookie,cookiefile用于读取cookie并发送http请求,肯定还有其他东西:(问题可能与请求的
内容类型
有关。如前所述,如果
CURLOPT_POSTFIELDS
选项的值是一个数组,
内容类型
头将设置为
多部分/表单数据
。因此,如果远程服务器期望另一个
内容类型的值
(例如,
application/x-www-form-urlencoded
)这可能会成为一个问题。是的,这是真的,但这里是catch-登录成功并写入了cookie。问题是,cookie与哈希代码不兼容,当我使用相同的cookie并手动替换哈希代码时,它就可以工作了。我不知道我遗漏了什么,或者这是怎么可能的:(在网络控制台中监控请求,可能是javascript中设置的任何cookie。