0

重複の可能性:
$_SESSION 変数はどこに保存されていますか?

セッションで作業するときはいつでも、各ページでセッションを開始する必要があります。1.phpにリダイレクトするようにセッションを設定したとし2.phpます。2.php ページでセッションを再度開始しています。の が何であるかを知りません。1.php2.php2.phpsession id1.php

今私の質問は、これがどのよう2.phpに同じようになっているのsession id1.phpです。このセッションはどこに保存されますか? どのように機能していますか?

Frederick Marcoux が SESSION_START() は 2.php によって無視されると言っているので、ここでは 1.php から 2.php にパラメーターを渡しません。2.php は、セッションが既に実行されていることをどのように認識しますか。

サーバー側にある場合、複数のセッションの場合、どのセッションがどのリクエストに対するものであるかをどのように識別しますか?

4

3 に答える 3

1

セッションは Cookie ベースです。1 つのページでセッションを開始すると、ID が取得されます。session_destroy()この ID は、 を作成して で新しいセッションを開始するまで同じですsession_start()

なぜそのように?

複数のページが、ユーザーのログ記録または追跡のために同じセッション ID を使用する場合があるためです。

`2.php` の `session_start()` は何をしますか?

サーバーによって単に無視されます。PHP ログを確認すると、次のような内容が表示されます。

SESSION_START() IGNORED. A SESSION HAS BEEN ALREADY STARTED.

3 か月前に同じ質問がありましたが、この Web サイトにはありませんでした。

于 2012-06-18T04:20:44.377 に答える
1

このように考えてみてください....

誰かが 1.php ページにアクセスすると、ページの上部にある session_start() がサーバー (ホスティング) でアクションを開始し、一意のセッション ID が生成されます。

次に、サーバー (同じドメインの下) (つまり、2.php または 3.php) 上のすべてのページ (url) に添付され、これらのページに session_start() 関数が存在する場合、SID はスクリプトで使用できます (これらのページで) アクセスして検証することができます。

ページ 3.php の SID が、同じユーザーがページ 1.php にアクセスしたときに作成/生成したものと一致する場合、このページが同じ人物によってアクセスされていることがわかり、それらのために別のことを行います。たとえば、ページ 3.php に直接アクセスし、必要な SID を取得しなかった訪問者に対しては行いません。

SID はサーバーからブラウザに渡され、クリアされるか有効期限が切れるまで Cookie として保持されます。

( ...かなり薄めましたか? :)

于 2012-06-18T05:27:26.823 に答える
0

このsession_save_path()方法を試して、whrsessionsが Web サーバーに保存されていることを確認してください。

の を見てsession.save_pathくださいphp.ini

于 2012-06-18T04:22:07.197 に答える