6

私は今まで見た中で最も奇妙な問題を抱え始めたばかりで、私のサイトのホスト以外は何も変わっていません。コードで通常の変数と同じ名前の$_SESSION変数をたくさん使用していますが、通常の変数を設定すると、同じ名前の$_SESSION変数が変更されるようです。

たとえば、私がする場合

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

greenは応答として受け取ります...どうすればこれを起こさせないのですか?変更が必要なPHPini変数がある可能性が高いと思いますが、これについては何も見つからないようです...


解決

ですから、私は自分のサイトをホストするために別のホストにいるので、次のようにこれを実行する必要がありました。ファイルを作成し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>

競合する変数はもうありません!私はまた、この経験から何かを学び、もう少し研究をしました。変数とセッション変数は、とにかく同じであってはなりません。残りのプログラミング全体で使い始めるのは良い習慣です。

4

1 に答える 1

9

register_globalsオンになっているようです。それはあなたが経験しているような衝突を引き起こします。サーバーを構成するときに、ホストがそれらをオフにするのを忘れた可能性があります。彼らがそうしたら、あなたの問題はなくなるはずです。

オフにすることを拒否した場合は、新しいホストを見つけてください。register_globalsオフにする必要があるだけでなく、非推奨になり、次のバージョンのPHPで削除される予定です。

于 2012-12-30T05:37:55.727 に答える