我突然开始遇到我见过的最奇怪的问题,除了我网站的主机之外什么都没有改变。我在我的代码中使用了许多$ _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>
没有更多相互矛盾的变数!我也从这次经历中学到了一些东西并做了一些进一步的研究;变量和会话变量不应该是相同的。这是一个很好的做法,我将在我的其余编程中开始使用。
答案 0 :(得分:9)
看起来register_globals
已启用。这会导致你遇到的冲突。您的主机可能在配置服务器时忘记关闭它们。一旦他们这样做,你的问题就会消失。
如果他们拒绝关闭它,请找一个新主机。不仅应关闭register_globals
,而且它们已被弃用,并将在下一版本的PHP中删除。