1

Web サーバーが再起動されたため、PHP セッションは機能しなくなりました。何人かが私に有益なアイデアをくれましたが、どれもうまくいきませんでした。私は非常に単純化された例を作成しましたが、うまくいくと確信していますが、うまくいきません。誰かが理由を説明できれば、私はとても感謝しています。これまでに丸一日費やしました。

私の理解では、 $_SESSION は「超グローバル」であるべきであり、どこでも利用できるということです。

わかりやすくするために、コードがまだ機能しない、つまり "Hello World" を印刷する 2 つのページを削除して書き直しました。

誰かがこれのどこが悪いのか教えてくれたら、とても感謝しています!

----------- ウェブページ ONE.PHP -----------------

<?PHP session_start(); ?>
<html>
<head>
<title>Page One</title>
</head><body>
<?PHP
     $_SESSION['testvalue'] = "Hello World";
?>
<p><a href="pagetwo.php">Click here</a> to see page two</p>
</body></html>

----------- ウェブページ TWO.PHP -----------------

<?PHP session_start(); ?>
<html>
<head>
<title>Page Two</title>
</head><body>
<?PHP echo $_SESSION['testvalue']; ?>
<br>
</body></html>

Web ページ 1 を実行し、リンクをクリックしてページ 2 に移動すると、「Hello World」を表示するページの代わりに

注意: 未定義のインデックス: c:\inetpub\wwwroot\two.php の testvalue

C:\PROGRAMDATA\PHP\SESSIONS を確認したところ、そこにというファイルがあります

sess_905m06314ibdubru8ko0aqj4d1

以下を含むもの

testvalue|s:11:"こんにちは世界";

このファイルはone.phpを実行したときに作成されたもので、アプリがセッション情報を書き込む権限を持っていることを示しています

私が密集しているように見えたら申し訳ありませんが、なぜこれが機能しないのか理解できず、一日の大半を費やしてそれを理解しようとしました.

ありがとうございました。

4

2 に答える 2

0

セッションを別のディレクトリに保存してみてください (これは php.ini を編集して行います):

session.save_path = "C:\php_session_test"

その理由は、Windows 7 では ProgramData が「特別なフォルダー」であるため、いくつかのファイル システム リダイレクト ( ... など)があるC:\Windows\System32ためです。C:\Windows\Sysnative

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspxを参照してください。

于 2012-11-20T20:51:09.507 に答える
0

セッションがページ 2 に反映されていないようです。Cookie を無効にしていますか? http://ie1.php.net/manual/en/session.idpassing.phpは、URL で SID を渡す方法を示しています。それを試して、セッションにアクセスできるかどうかを確認してください。ブラウザの Cookie を確認し、必要に応じて phpinfo() を実行してセッション ID を確認してください。2ページ目で違う場合は、それが問題です。

于 2012-11-20T20:53:18.933 に答える