会话变量值已更改

时间:2012-08-12 13:54:41

标签: php session

我正在使用session来存储我的php网站中的一些数据,但是在某些页面中,当我在会话中获取数据时,有些时候会更改,有些时候会相同。 我搜索了很多并在

找到答案

session id value changes

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

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

&#34;

帮助我在我的php文件中搜索但我没有找到类似会话变量的变量,那么问题是什么? 给我一些关于php会话的细节,如果可能的话,建议好书。

  

已编辑:

我已经将php.ini设置为所有人说使用phpinfo();函数关闭register_global而不是ckeck,并检查register_global是否已关闭。 但是过了一段时间后我用我的id和mypage menu.php登录后,我改变了会话记录的id并且我自动登录了另一个帐户。 请帮帮我

3 个答案:

答案 0 :(得分:1)

通过在php.ini文件中添加以下行来禁用Register_Globals可能会解决此问题。

register_globals = Off

如果您使用的是共享虚拟主机服务,请按照:

  • 如果您有权访问/ cgi-bin文件夹,则在其中创建自定义的php.ini文件。
  • 如果您没有访问权限,请在根文件夹中创建自定义php.ini文件。

然后在php.ini文件中添加上面提到的行。

.htaccess文件中添加以下代码行也可以解决您的问题。

php_flag register_globals off

答案 1 :(得分:0)

您不应该使用注册全局变量,因此它不应该是一个问题。

如果您运行了注册全局变量,请将此行添加到.htaccess以禁用:

php_flag register_globals off

在运行时无法使用ini_set(),因此您需要使用htaccess或php.ini,如前面的答案所示。

答案 2 :(得分:0)

现在不太可能register_globals是你的问题。更可能的是,它与a)存储实际会话数据的位置有关; b)“会话ID”如何从一个请求传输到下一个请求。

首先要看的是session_save_path(),它告诉PHP在磁盘上哪里存储你放入会话变量的数据。

另一部分有点复杂,但是关于如何设置cookie,让PHP知道加载相同的会话而不是创建一个新的会话。您可能需要查看此cookie的生命周期或它适用的范围(域/子域/ URL路径)。看看session_set_cookie_params(),通常会阅读PHP手册的这一部分,以了解会话的工作方式。