2012-01-20 7 views
2

一つを、変更、最も奇妙なことが起こるかもしれません。次のコードでは、POST要求の「パスコード」が再定義され、値の追跡がより簡単になりますが、テストではコメントに示された超自然的な出力が生成されます。は、それはそうと、その後、セット「パスコード」キーでPOSTリクエストを受信して​​、伝えられるところではPHP 5.2がインストールされているリモートサーバー上で実行されたセッション変数の値私のPHPページの

$_POST["passcode"] = "hi"; 
$_SESSION["passcode"] = "hello"; 

echo $_SESSION["passcode"] . '<br />'; // prints "hello" 
$passcode = $_POST["passcode"]; 
echo $_SESSION["passcode"] . '<br />'; // prints "hi" 

EDIT:それはregister_globalsのことだようなので、見えます。

は私が上でコードを実行しているサーバー上のphp.iniファイルへのアクセス権を持っていない場合は、この動作をオフにする方法はあります。したがって、別の質問はありますか?

+0

受信ファイルには、その結果があるか、それとも既存のコード全体が含まれている場合のみですか? – MetalFrog

+0

@ MetalFrog POSTがPHPファイルを受け取っているのは、私がこれまでテストした唯一の場所です。 –

+0

それは奇妙です。
5行目をコメントアウトすると同じですか? –

答えて

7
を書かれているされて
+0

ありがとうございます。しかし、これは私のポストで別の質問を生み出しました... –

+0

私は私の答えを更新しました – Mchl

8

明らかに、セッション変数はグローバルとして登録されています。

ことが可能である一つの可能​​な理由はどこかにあなたが説明するように、あなたが、あなたが .htaccessファイルでこの設定を無効にすることができ、あなたの php.iniファイルを編集することができない場合 register_globals

のようなにおいが

$_SESSION['passcode']=&$passcode; 
+0

あまりにもあなたに束をありがとう。 –

+0

あなたは大歓迎です。申し訳ありません "別の質問"を参照してください:) –

2
+0

私は自分のコードでどこでもそれをしていないことを確かに。 –

+0

次に、セッション変数はグローバル変数として登録されています。他の人が言っているように... –

2

セッション変数はグローバルバリエーションとして処理されるように構成されているため、$_SESSION["passcode"]とでアクセスできます。何か他のものにあなたのPHPの設定(register_globalsの)

-1

変更に変数

$passcode 

の名前を確認してください。?

+3

私はむしろ自分のプログラミングスタイルよりも私のホスティングプロバイダを変更したいと思います。 –

関連する問題