我正在写一个PHP网站。我有一个$_SESSION['id']
来保存用户的用户名id,稍后我将在我的脚本中使用此值。但是,我注意到,当我浏览网站时,ID会发生变化。
以任何方式保留id
吗?或者,我应该将id
更改为其他内容吗?
每当我多次点击按钮时,就会发生此问题。我100%确定在初次登录后我没有改变$_SESSION['id']
。
有人可以帮助我了解正在发生的事情,以及如何解决这个问题。
答案 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();