我运行后续测试以验证我的代码是否正常工作:
curl -L -i -X POST -d'json = {“orderBy”:0,“maxResults”:50}'http://mysite.com/ctlClient/
我致电:http://mysite.com/ctlClient/index.php:
session_unset();
session_start();
//pass data to _SESSION
foreach($_POST as $key => $value){
$_SESSION[$key] = $value;
}
// redirect to `/fwf/online/index.php`
ctlGotoSameDomain("/fwf/online/");
重定向后,我拨打/fwf/online/index.php
:
<?php
session_start();
....
class fwfOnline {
public function __construct() {
msqLogFile('test/test_max',$_SESSION);
// here is my problem, $_SESSION is empty, :(
$this->json = isset($_SESSION['json']) ? $_SESSION['json'] : null;
global $gConfig;
if ($gConfig['soapDebug'])
msqLogFile("fwf/post", Array('post' => 'Request: '.$this->json));
$this->response = $this->getResponse();
echo $this->response;
}
....
在mysite.com/ctlClient/index.php
的日志中,我看到$ _SESSION有数据
但在/fwf/online/index.php
中它是空的。
有人可以告诉我我错过了什么吗?
谢谢,
[编辑] 来自@ rr-
我打印了两个会话ID并且有所不同:
"2013-07-05 09:44:31","Session ID: ihpfs1skrp792gncgancb02516"
"2013-07-05 09:44:31","Session ID: tp6ejtl1tj9bigrgsi3jt6h9a1"
为什么会发生?
[FIX]
关于@rr-
回答我发现了问题,
我需要在我的脚本中添加-b
以启用Cookie。 CURL默认情况下不使用它们,并且此问题导致会话ID问题。
谢谢rr-
答案 0 :(得分:1)
确保您已在目标网页中启动了会话:/fwf/online/index.php
。
您还可以在两个页面上检查session_id()
的返回值。该值应该相同,即使您在两个页面上都调用了session_start
,但这可能意味着三件事:
session_write_close
,这会有效地导致创建新会话并忘记以前的所有数据,我认为第三种选择很可能是问题的原因。