PHP会话/子字符串问题


php session/substr problem

我的代码中有一个奇怪的问题,我真的无法解释,它对我来说没有任何逻辑意义。当一个人成功登录我的网站并被重定向到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变量时,它会导致会话问题,从而使它"消失",正如我前面所说的。

这个问题已经通过简单地更改变量名来解决,以确保它们不与会话名冲突。