通常、ユーザーのログイン セッションは Web サイトごとに 1 つの Cookie に保存され、1 つのブラウザーのすべてのウィンドウとタブで共有されます。ブラウザで Cookie をクリアすると、再度ログインする必要があります。これは、次にリモート Web サイト (PHP サイト) にアクセスしたときに、古いセッション ID で Cookie を渡さなくなるためです。
これは、2 人のユーザーが同じブラウザーを使用している場合に問題を引き起こします。これは、Web サイトの Cookie が両方のユーザーで同じであるためです。
1 つのオプションは、PHP サイトに手動の「ログアウト」ボタンを提供することです。これにより、30 分のタイムアウトが発生する前にセッションが破棄されます。ただし、完了時にユーザーがこのボタンをクリックするという保証はありません。
セッションIDの受け渡しに関するPHPドキュメントから:
セッション ID を伝搬するには、次の 2 つの方法があります。
セッション モジュールは両方の方法をサポートします。Cookie が最適ですが、常に使用できるとは限らないため、別の方法も提供しています。2 番目の方法は、セッション ID を URL に直接埋め込みます。
これは、実行時オプションを有効にしsession.use_trans_sid
、セッション ID を Cookie に保存する代わりにすべての URL に埋め込む別のオプションがあることを示しています。mysession=123
これにより、次の URL の末尾にある値のようなものが得られます。www.example.com/home.php?mysession=123
したがって、ユーザー 1 が www.example.com にアクセスしてログインを実行するとmysession=123
、セッションがアクティブである限り、すべてのリンクが最後に表示されます。
次に、ユーザー 2 が新しいタブで www.example.com を参照すると、mysession=###
入力した URL に値がなかったため、再度ログインするように求められます。このタブでログインすると、すべてのリンクに mysession のような新しい値が設定されます。www.example.com/home.php?mysession=345
警告: PHP ドキュメントのuse-trans-sid 設定に関するこのメモでわかるように、ほとんどのサイトが Cookie の使用を好むのには理由があります。
URL ベースのセッション管理には、Cookie ベースのセッション管理と比較して、追加のセキュリティ リスクがあります。たとえば、アクティブなセッション ID を含む URL を友人にメールで送信したり、セッション ID を含む URL をブックマークに保存して、常に同じセッション ID でサイトにアクセスしたりできます。