在safari中的其他页面中调用时,PHP会话为null

时间:2010-04-28 23:37:02

标签: php session safari

我创建了一个会话,当从Safari上的ajax调用调用时,该会话为null。

header.php
session_start();
$_SESSION['test'] = 'this is my session';


mypage.php
session_start();
echo $_SESSION['test']; <-- NOT WORKING ON SAFARI

由于

4 个答案:

答案 0 :(得分:4)

它在其他浏览器中有效吗? 没有AJAX,它在Safari中有效吗? 此脚本是否从原始页面所在的同一域加载?

Safari显然有更多conservative cookie policy than other browsers。如果PHP端的所有内容都可以工作,而其他浏览器也可以工作,我认为Safari不会将会话cookie发送回服务器。

答案 1 :(得分:4)

我遇到了同样的问题,session_id()一直在更改每次刷新,因此safari没有将会话ID存储在cookie中。通过手动添加:

setcookie('PHPSESSID', session_id(), 0, '/');

我明白了。

答案 2 :(得分:1)

在两个文件中的session_start()之后添加此行,并告诉我会话ID是否相同(这意味着您在同一会话中)。

echo session_id();

答案 3 :(得分:0)

null还是""

当你if(isset($_SESSION['test']))它返回true时?

这是唯一的野生动物园吗?如果是这样你的浏览器设置。

你的会话cookie是否成功保存,你可以在header.php页面的其余部分读取$ _session ['test']吗?

你是否在页面的最开头调用了session_start()?

你有任何错误吗?如果不是 - 你已经将它们打开了吗?