【发布时间】:2012-05-29 13:16:33
【问题描述】:
我编写了一个使用 php 会话的 php web 应用程序。当我在 Android 手机上尝试时,结果发现浏览器没有保留会话 cookie。 我把它归结为这个超短的测试脚本:
<?php
session_start();
var_dump($_COOKIE);
?>
我在另一个浏览器中看到的预期行为是: 在我们看到的第一个电话中:
array(0) { }
在第二次和后续调用中,我们看到如下内容:
array(1) { ["PHPSESSID"]=> string(32) "8f08c514a5c15c36309e9a435ebcc8ec" }
在 Android 手机上,$_COOKIE 数组仍然是空的,我总是得到第一个响应 (array(0) { })。
我检查了设置并启用了 cookie。其他需要登录的网站(不是我写的)也可以正常工作。 我还尝试清除所有 cookie 和缓存以防万一,但它没有改变任何东西。
编辑:为了澄清, session_start() 应该设置会话 cookie,它实际上可以在台式电脑上使用 Firefox。我还查看了 http 标头并发现
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=a270cbe1b57ba089c1eedacd8344e871; path=/
所以 cookie 肯定会被设置。当然,除非 PHP 在为 Android 浏览器提供服务时有所不同。
这是一个已知问题还是我遗漏了一些明显的问题?是否有解决方法?
【问题讨论】:
-
您确定要使用测试脚本设置 cookie 吗?您似乎没有在您发布的那个简短脚本中设置任何内容。
-
您必须先将数据添加到cookie,然后再尝试var_dump
-
session_start() 应该自动设置会话cookie。这是使用 firefox 浏览器观察到的。
标签: php session session-cookies