我的代码中有一个奇怪的问题,我真的无法解释,它对我来说没有任何逻辑意义。当一个人成功登录我的网站并被重定向到index.php
页面时,我正在设置一个名为$_SESSION['user_id']
的会话变量。这工作得很好,会话工作得很好,但是一旦我刷新页面,会话中的值就消失了,但我不知道为什么。
$long_user_id = $_SESSION['user_id'];
$user_id = substr($long_user_id, 0, -3);
有谁能看出问题出在这里吗?我认为称为user_id
的会话变量将保持不变,但由于某种原因,它在第二次页面加载后为空。
Thanks in advance
编辑:我没有发布我所有的代码,我犯了一个错误,没有提到我在每个页面上使用session_start();
。我还想确认,如果我从页面中注释掉代码的substr
部分,代码是否有效。
您总是必须首先通过session_start()
启动和维护会话-否则您的会话将消失。请注意,因此您必须在每个页面上调用session_start()
。
这个问题的"解决方案"没有什么意义。由于一些奇怪的原因,$_SESSION['user_id'];实际上在PHP脚本中被存储为$user_id。我无法解释这一点,我不知道为什么它是这样做的,但它的意思是,当我调整$user_id变量时,它会导致会话问题,从而使它"消失",正如我前面所说的。
这个问题已经通过简单地更改变量名来解决,以确保它们不与会话名冲突。