1

奇妙な PHP セッションの問題が発生しています。それがセッションの仕組みかどうか教えてもらえますか?

問題を確認するには、次のコードを任意の php ファイル (test.php など) にロードし、2 回実行します。注: ページのロードとリロードの 2 回実行する必要があります。

<?
session_start();
$_SESSION["test"] = "Original////";
$test=$_SESSION["test"];
echo $_SESSION["test"];
$test="New////";
echo $_SESSION["test"];
?>

私のサーバーでは、このテストページを初めてロードしたときに、

オリジナル////オリジナル////

そしてそれは正しいです。しかし、リロードすると、

元の////新しい////

これは 5 行目の "$test="New////";" を意味します。実際に $_SESSION["test"] を書き直してください。それは私には意味がありません。誰が何が起こっているのか知っていますか?または、それは私のサーバーで起こっているだけですか???

4

3 に答える 3

6

サーバーでregister_globalsが有効になっているようです。ディレクティブを無効にする必要があります。

于 2012-11-30T10:48:28.977 に答える
1

<?まず、 PHPの開始タグとして使用せず、 を使用してください<?php。第 2 に、有効にしている場合、これは予期される動作ですregister_globals。このリンクを見てください:

http://www.theblog.ca/session-register-globals

タイトルには次のように書かれています。

register_globals がオンの場合、セッション変数はグローバル変数を上書きします

サンプルコードはあなたのものに似ています:

<?php
session_start();
$canadaday = 'July 1st';
$_SESSION['canadaday'] = 'July 2nd';

print '<p>When is Canada Day?</p>';
print '<p><strong>' . $canadaday . '</strong></p>';
?>

register_globals、結果はJuly 2ndです。HTH。

于 2012-11-30T10:52:00.717 に答える
-2
<?php
session_start();
$_SESSION["test"] = "Original////";
$test=$_SESSION["test"];
echo $_SESSION["test"];
$test="New////";
echo $_SESSION["test"];
?>

私は自分の環境でコードを試しましたが、完全に実行されています。常にOriginal //// Original ////を出力するため、サーバー上でのみ発生します。

于 2012-11-30T10:53:03.950 に答える