卷曲不通过phpsessid
尽我所能,我无法让curl传递 PHPSESSID cookie.我有类似于其他几个人描述的设置,但我无法使任何提议的解决方案有效. 我有一个向pageA.php发送get请求的页面. pageA.php需要来自pageB.php的一些信息,这是在另一台服务器上,所以我使用的是curl. pageB维护我需要进入和从我的页面进入的会话状态. 我可以将其他cookie从pageA传递到pageB,而不是PHPSESSID cookie. 以下工作(cookie到达pageB): 以下不是: $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); ?> (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 解析代理URL时出错.端口号错误
- 为什么/usr/include/linux/stddef.h为空?
- LinuxC:如何在多进程程序中设置文件读取优先级?
- 搜索 – 在所有VI缓冲区中查找/查找
- c – SYSV与Linux / GNU ELF格式
- 如何在linux mint下的zsh中设置virtualenvwrapper?
- 转载--How to Install VMware Tools on CentOS 6.3
- linux – 如何获取使用sudo运行的命令的pid
- 如何捕获IP数据包,更改其内容并在Linux上重新发送?
- Linux getopt()函数 getopt_long()函数---转