【问题标题】:PHP Setting Normal Variables Changing Session VariablesPHP 设置普通变量 更改会话变量
【发布时间】:2012-12-14 20:15:40
【问题描述】:

我突然开始遇到我所见过的最奇怪的问题,除了我网站的主机之外什么都没有改变。我在代码中使用了很多 $_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>

不再有冲突的变量!我也从这次经历中学到了一些东西,并做了一些进一步的研究;变量和会话变量无论如何都不应该相同。这是一个很好的实践,我将在接下来的编程中开始使用它。

【问题讨论】:

    标签: php session variables


    【解决方案1】:

    看起来register_globals 已打开。这将导致像你正在经历的冲突。您的主机可能在配置服务器时忘记关闭它们。一旦他们这样做了,您的问题就会消失。

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

    【讨论】:

    猜你喜欢
    • 2011-12-07
    • 1970-01-01
    • 2012-12-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多