卷曲不通过phpsessid

前端之家收集整理的这篇文章主要介绍了卷曲不通过phpsessid前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尽我所能,我无法让curl传递 PHPSESSID cookie.我有类似于其他几个人描述的设置,但我无法使任何提议的解决方案有效.

我有一个向pageA.PHP发送get请求的页面. pageA.PHP需要来自pageB.PHP的一些信息,这是在另一台服务器上,所以我使用的是curl. pageB维护我需要进入和从我的页面进入的会话状态.

我可以将其他cookie从pageA传递到pageB,而不是PHPSESSID cookie.

以下工作(cookie到达pageB):
$options [CURLOPT_COOKIE] =“myPHPSESSID =”. $的sessionId;

以下不是:

$options[CURLOPT_COOKIE] =  "PHPSESSID=" . $sessionId;

(我构建了一个$options数组,然后将其传递给curl_set_opt_array)

实际上,后者导致我无法辨别的某种错误,因为我对curl_exec的调用永远不会返回(并且从未到达pageB).

我已尝试设置标头而不是使用CURLOPT_COOKIE,但也没有成功:

$options[CURLOPT_HTTPHEADER][] = "Cookie: myPHPSESSID=" . $sessionId;

上面的工作很好但是

$options[CURLOPT_HTTPHEADER][] = "Cookie: PHPSESSID=" . $sessionId;

才不是.

PHP显然不希望我手动设置PHPSESSID.我不确定它是否相关,但是在任何时候我都没有调用start_session()(尽管我尝试过这样做并且得到了相同的结果).

我意识到我可以(可能)只是将会话ID作为一个不同名称的cookie传递,并让pageB调用set_session_id()或类似的东西.但我真的想知道为什么我正在做的事情不起作用,因为我宁愿修复我做错的事情而不是创建一个解决方法.如果有帮助的话,我可以提供各种标题的转储,但我觉得这个问题已经足够长了.

谢谢…

解决方法

我面临着同样的问题.找到了解决方案.

调用session_write_close();在你的curl_exec之前.

这节省了我的生命:http://kmak.1funkybit.com/?p=126(阅读说明).

例:

<?PHP
session_start();
var_dump($_SESSION); //See what's in session
echo "<br>";



$c = curl_init('http://192.168.100.204/logintest/index.PHP?r=AccessTest/CheckAcess');
$parametros_post = 'action=verChau';
curl_setopt($c,CURLOPT_POST,true);
curl_setopt($c,CURLOPT_POSTFIELDS,$parametros_post);
curl_setopt($c,CURLOPT_VERBOSE,TRUE);
curl_setopt($c,CURLOPT_COOKIE,'PHPSESSID=' . $_COOKIE['PHPSESSID']);
curl_setopt($c,CURLOPT_RETURNTRANSFER,true);
session_write_close();
$page = curl_exec ($c);
echo "<br>";
echo "<br>";
echo $page;
curl_close ($c);


?>
原文链接:https://www.f2er.com/linux/393121.html

猜你在找的Linux相关文章