我想通过发送POST请求来读取登录后获得的cookie值。
然后我想使用Curl将该cookie值与另一个POST请求一起发送给另一个动作。但在发送此信息后,当我试图查看所有发布的标题时,它确实显示我已发送任何cookie值。我的发布网址无法使用此值,因此无法通过身份验证访问该信息。请告诉我我做错了什么:
$URL1 = "http://www.getinf.com/iconf/user?action=buGroup";
$postfields1 = "device=mapp&type=ajax&name1=ra&cc1=91&min1=90name2=imm&cc2=91&min2=97";
// sends a post request
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL,$URL1);
curl_setopt($ch1, CURLOPT_POST, 1);
curl_setopt($ch1, CURLOPT_COOKIE,'JSESSIONID=199FFF6355DEA87F3D72E692E7514AD2');
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch1, CURLOPT_HEADER,true);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1, CURLOPT_POSTFIELDS, $postfields1);
$result = curl_exec($ch1);
print_r(headers_list());// displays all post request data
$ret = ReturnVal($result);
print_r(get_headers($URL1, 1)); //
curl_close ($ch1);
那么这段代码有什么问题阻止JSESSIONID值作为cookie值访问?
答案 0 :(得分:1)
在php docs:
中查看此页面上的评论(或搜索“Cookie”)什么都没提到 文档是你必须设置的 CURLOPT_COOKIEJAR到一个文件 实际使用Cookie的CURL句柄, 如果没有设置,则cookie不会 被解析。
答案 1 :(得分:0)
尝试将CURLOPT_cookie更改为CURLOPT_COOKIE
答案 2 :(得分:0)
CURLOPT_COOKIESESSION用于启动新的Cookie会话并忽略存储的所有Cookie。
来自PHP.net:使用CURLOPT_COOKIESESSION = TRUE将此标记为新的cookie“会话”。它将强制libcurl忽略它将要加载的所有cookie,它们是来自前一个会话的“会话cookie”。默认情况下,libcurl始终存储和加载所有cookie,如果它们是会话cookie,则是独立的。会话cookie是没有到期日期的cookie,它们只是存在且仅存在于此“会话”中。
使用:curl_setopt($ ch,CURLOPT_COOKIESESSION,false);