PHP会话以某种方式重置

问题描述:

我正在一个网站上工作,当前用户可以选择不同的城市查看..我不想让这个城市保持在URL中,我不想依赖上的cookie,如果客户端将不接受cookies ..我做这件事的会议,然后,但不知何故,该会话很早就停止,我不明白什么是错的..PHP会话以某种方式重置

if (isset($_GET['c'])) { 
unset($_SESSION['city']); 
$_SESSION['city'] = $_GET['c']; 
} 
if (empty($_SESSION['city'])) { 
$_SESSION['city']='07400'; 
} 
$city = $_SESSION['city']; 

我点击后三位周围的网页,城市回到07400 ..在某些方面..会议得到空......但我不知道如何...

+0

可能您忘记了在开始时调用'session_start()'的脚本。 – martinstoeckli 2012-07-21 14:49:04

+3

使用会话时,您的功能仅适用于启用了Cookie的用户。 SessionID将存储在发送给浏览器的cookie中。 – stefreak 2012-07-21 14:49:54

+0

如果您的第一个IF中的GET [“c”]为空,会话变量也将变为第二个IF,并获取值07400 – Gntem 2012-07-21 14:50:31

经过脚本足够长的时间后,我发现,城市脚本没有什么问题...... Sessions没有什么问题..但是由于后来在脚本中出现了脚本错误,它将$ _SESSION ['city'] ..感谢所有回复..并且感谢提示以查找错误,并且可能会更改会话ID ...

没有可能性测试/调试您的项目,它是非常很难找出问题所在。尽管如此,这可能有助于让您走上正轨:

我会在您要求的每个页面上给出会话IDprint(session_id());

如果会话标识更改为,则表示您已丢失会话并应检查id如何传递并重新创建会话(cookie,id in url,session_start)。我还会在页面的开始部分编写代码error_reporting(E_ALL);,以查看是否收到头文件已发送的警告。

如果会话标识保持不变,会话将被正确地重新创建。然后我会搜索项目的代码,写入会话并可能重置变量。