0

我正在使用 session 将一些数据存储在我的 php 网站中,但是在某些页面中,当我获取 session 中的数据时,有时会发生变化,有时会发生相同的变化。我搜索了很多并找到了一些答案

会话 ID 值更改

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

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

"

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

编辑:

我已经将 php.ini 设置为你们所有人都说它的 register_global 问题关闭,然后使用 phpinfo();函数进行 ckeck 并检查register_global是否关闭。但是一段时间后,我使用我的 ID 登录,而不是在我访问的 mypage menu.php 之后,它更改了会话记录 ID,并且我自动登录了另一个帐户。请帮我

4

3 回答 3

1

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

register_globals = Off

如果您使用的是共享 Web 托管服务,请执行以下操作:

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

然后在 php.ini 文件中添加上述行。

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

php_flag register_globals off

于 2012-08-12T14:30:15.720 回答
0

您不应该使用 register 全局变量,所以它不应该是一个问题。

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

php_flag register_globals off

它不能在运行时使用 ini_set() 完成,因此您需要使用 htaccess 或 php.ini ,如上一个答案。

于 2012-08-12T14:34:11.017 回答
0

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

首先要查看的是session_save_path(),它告诉 PHP 在磁盘上的哪个位置存储您放入会话变量中的数据。

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

于 2012-08-12T15:21:24.397 回答