我有一个会话创建,当从Safari上的ajax调用时调用它为null。当在Safari浏览器的其他页面中调用PHP会话时为空
header.php
session_start();
$_SESSION['test'] = 'this is my session';
mypage.php
session_start();
echo $_SESSION['test']; <-- NOT WORKING ON SAFARI
感谢
我有一个会话创建,当从Safari上的ajax调用时调用它为null。当在Safari浏览器的其他页面中调用PHP会话时为空
header.php
session_start();
$_SESSION['test'] = 'this is my session';
mypage.php
session_start();
echo $_SESSION['test']; <-- NOT WORKING ON SAFARI
感谢
它可以在其他浏览器中使用吗? 在没有AJAX的Safari中工作吗? 这个脚本是从原始页面的同一个域加载的吗?
Safari显然有更多conservative cookie policy than other browsers。如果PHP端的所有内容都能正常工作,并且其他浏览器可以正常工作,那么我认为Safari不会将会话cookie发送回服务器。
是null
还是""
?
当你if(isset($_SESSION['test']))
它是否返回true?
这是唯一的野生动物园?如果是的话,那么你的浏览器设置
您的会话cookie是否保存成功,您可以在header.php页面的其余部分阅读$ _session ['test']?
您是否在页面的最开始处调用session_start()?
你有什么错误吗?如果没有 - 你有没有让他们打开?
在两个文件中的session_start()
之后加上这一行,并告诉我会话ID是否相同(即表示您在同一会话中)。
echo session_id();
我面临同样的问题,session_id()不断更改每次刷新,所以safari没有将会话ID存储在cookie中。通过手动添加:
setcookie('PHPSESSID', session_id(), 0, '/');
我得到它的工作。
实际上有一个更精确的函数,它可以设置会话cookie参数 - [session_set_cookie_params](http://php.net/manual/en/function.session-set-cookie-params.php) – SteveB 2014-11-20 11:21:25
您是否检查过启用了cookies? :) – 2010-04-28 23:40:51