2012-01-11 82 views
0

我有一个主页面启动一个PHP会话,它创建会话ID#1。我用session_id()检查这个。我想从PHP AJAX脚本访问这些会话变量。为了测试这个,我只是简单地执行:使AJAX PHP脚本使用与主页面相同的会话

session_start(); 
echo session_id(); 

从这个AJAX脚本。它返回一个不同的AJAX会话ID。

我知道我可以将会话ID从主页面传递给AJAX脚本。有没有其他方法可以让AJAX脚本默认打开同一个会话?

澄清我通过javascript来做到这一点,更具体地说,它是JQGrid的添加/编辑脚本。

+0

你怎么拨打电话相同的会话?如果它是通过JS,它应该有相同的会话ID。如果是闪光灯,则不同。 – usoban 2012-01-11 15:47:23

+0

这是为了处理会话cookie的范围。很显然,你的AJAX调用所调用的位置不在会话cookie的范围之内 - 要解决这个问题,你需要[扩大范围](http://php.net/session-set-cookie-params)或更改目标位置以使其落入现有范围内。或者,您可以手动将会话ID作为AJAX请求中的GET或POST参数传递。进一步阅读cookie范围[这里](http://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path)。 – DaveRandom 2012-01-11 15:47:25

+0

@DaveRandom - 感谢有关cookie范围的信息。我认为这一定是问题所在。会话变量在web根目录 - > index.php文件中定义,并且AJAX脚本位于Web根目录的子文件夹中。我会尽量扩大范围。我想你可以发表你的评论作为答案。 – 2012-01-11 19:00:33

回答

1

这很简单。

在ajax中,将您的session_id发布到ajax php。

在阿贾克斯PHP

设置,如:SESSION_ID($ _ REQUEST [ 'SID'])

那么你在

+0

我这样做了,但会议仍然是空的!我几乎放弃保存它.. – user109764 2014-12-10 00:16:50

相关问题