【发布时间】:2017-10-20 03:22:20
【问题描述】:
我有一个用于商业网站的表单和支付网关。对于要处理的付款,信息被发送到我的商家提供商的网关 URL(在我的站点/服务器之外),然后重定向回我的站点。如果您愿意,可以到收据页面。
嗯,在我迄今为止测试过的所有其他浏览器(IE6-9、FF、Chrome)上,一切正常。使用 Safari,所有会话变量都返回为空。
我已经测试了会话 ID 本身,它在整个站点中都是相同的,并且永远不会改变。即使我回到收据页面,它也保持不变。我在页面的最开始是这样的:
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
session_start();
我发现某处说header() 调用可以解决问题,但它没有!你对如何解决这个小问题有什么建议吗?我完全被难住了。
【问题讨论】:
-
您是否尝试过检查您的 Safari 以查看它是否能够接受 cookie?如果您尝试通过 URL 设置会话标识符会发生什么?这还能用吗?
-
感谢您的回复。我知道 Safari 问题,因此发帖大声笑。我已经尝试过来自 [link](stackoverflow.com/q/486569/367456) 的解决方案,这就是我从实际获得标题行的地方:)。但到目前为止还没有运气。我已将 Safari 更改为从不阻止 cookie。我可以将会话 ID 放在 URL 中并从那里拉出来,但会话变量仍然是空白的。让 Safari 从不阻止 cookie 的问题是我的访问者很可能不会有该设置 =/
-
如果在使用 URI 查询信息参数时会话仍然丢失,请仔细检查 PHP 是否允许这样做。还要仔细检查发送了哪些 cookie (
$_COOKIES)。如果 session-id 已发送,但$_SESSION为空,并且您已确认已为 sessionid 设置了它,那么您的代码/配置中肯定存在其他问题。您需要对此进行调试,例如检查是否发送了 cookie。