PHP设置正常变量更改会话变量

时间:2012-12-30 05:33:10

标签: php session variables

我突然开始遇到我见过的最奇怪的问题,除了我网站的主机之外什么都没有改变。我在我的代码中使用了许多$ _SESSION变量,这些变量可能与普通变量同名,但设置普通变量似乎正在改变具有相同名称的$ _SESSION变量。

例如,如果我这样做

$_SESSION['favcolor'] = 'blue';
$favcolor = 'green';
echo $_SESSION['favcolor'];

我得到green作为回应......我怎么不让这件事发生?我认为最有可能必须更改一些PHP ini变量,但我似乎无法在此找到任何内容......


因为我在不同的主机上托管我的网站,所以我必须按照以下方式进行操作。我创建了一个php.ini文件并将其放在我网站文件的根目录中,其中只包含以下行:

register_globals = Off ;notice the capital 'O' in 'Off'

然后在我的.htaccess文件中,我将其添加到文件的末尾:

<IfModule mod_suphp.c>
suPHP_ConfigPath /home/myhostusername/public_html/stumpyinc.com
<Files php.ini>
order allow,deny
deny from all
</Files>
</IfModule>

没有更多相互矛盾的变数!我也从这次经历中学到了一些东西并做了一些进一步的研究;变量和会话变量不应该是相同的。这是一个很好的做法,我将在我的其余编程中开始使用。

1 个答案:

答案 0 :(得分:9)

看起来register_globals已启用。这会导致你遇到的冲突。您的主机可能在配置服务器时忘记关闭它们。一旦他们这样做,你的问题就会消失。

如果他们拒绝关闭它,请找一个新主机。不仅应关闭register_globals,而且它们已被弃用,并将在下一版本的PHP中删除。