会话ID值更改

时间:2011-03-18 22:31:18

标签: php session

我正在写一个PHP网站。我有一个$_SESSION['id']来保存用户的用户名id,稍后我将在我的脚本中使用此值。但是,我注意到,当我浏览网站时,ID会发生变化。

以任何方式保留id吗?或者,我应该将id更改为其他内容吗?

每当我多次点击按钮时,就会发生此问题。我100%确定在初次登录后我没有改变$_SESSION['id']

有人可以帮助我了解正在发生的事情,以及如何解决这个问题。

3 个答案:

答案 0 :(得分:2)

我假设您已经使用session_start,如果没有看到其他评论:P

如果你有注册全局变量,如果你在代码中使用变量$id,你可能会看到这样的行为。作为测试,请尝试:

<?php
session_start();
$_SESSION['testing'] = 'Foo';
$testing = 'bar';
die($_SESSION['testing']);
?>

重新加载页面几次。如果bar打印出而不是Foo,则可能是您的问题。您可能希望将会话变量名称设置为不太可能在其他地方使用,或者(更正确)关闭寄存器全局变量。

答案 1 :(得分:0)

确保您在页面的最顶部(也就是其他任何地方之前)呼叫session_start()

这可能导致搞砸了。

关于为什么需要这样做的快速简要说明:

大多数情况下,会话ID(与$ _SESSION ['id']不同,不用担心)通过cookie存储。 Cookie值通过响应标头发送,响应标头需要首先发送回客户端。因此,如果您在调用session_start()之前输出ANYTHING,则实际上是在强制php发送响应头。这将导致响应头不包含cookie会话值,因此无法正确使用会话。

答案 2 :(得分:0)

确保您开始会话 - 请查看session_start();