ホームページ >バックエンド開発 >PHPチュートリアル >セッションを使用したログインに関連するいくつかの問題
セッションを使用したログインに関するいくつかの問題
このようにして、セッションを使用したログインを書きました。ログインするときに、セッション ID を Redis に保存します。
今度は、2 人のユーザーが同じアカウントにログインし、後でログインしたユーザーが先にログインしたユーザーを絞り出す機能を実装したいと思います。
私のアイデアの 1 つは、ログイン時に Redis に保存されているセッション ID を更新することです。ログインしたユーザーが操作を実行するたびに、ログイン時に保存されたセッション ID が一貫しているかどうかを確認するために Redis にアクセスします。現在のものとの不一致は、ログインが異なることを意味します。しかし、これは redis を頻繁に読み込むことになるでしょうか?プレッシャーはあるでしょうか?
もう 1 つのアイデアは、ログイン時に最後に保存されたセッション ID を確実に取得できることです。この方法では、以前にログインしたユーザーはセッションを取得できなくなります。ログインしていなくても、ファイルを保存できます。この方法では、ログイン時にのみデータベースが読み取られ、データベースの読み取り回数は比較的少なくなります。ただし、セッション ID を使用してファイルを破棄する方法がわかりません~~
専門家の皆様、これら 2 つの方法のどちらが優れていますか? 2 番目の方法では、sessionid を使用してファイルを破棄するにはどうすればよいでしょうか?それとももっと良い方法があるのでしょうか?アドバイスありがとうございます
-----解決策---------
次に、この方法がわかりません。 B はログイン時に session_id を取得し、A のセッション ファイルを破棄するということですか?やり方
-----解決策---------
ログイン時に、 sessionid を redis に保存します
ユーザー名をキーとして使用しますか、それともセッション ID をキーとして使用しますか?
ユーザー名をキーとして使用する場合、ログインしていなくても、その値 (セッション ID) が自分のものではない場合、
セッション ID をキーとして使用する場合、redis にはユーザー名が 1 つだけ存在します。ユーザー名に基づいて対応するキーをクエリする必要があります (複数のセッション ID を取得します)
これらのセッション ID を調べて、
session_id($sessionid);
session_start();
unset_session() を実行します。 ; 自分のものではないセッション ID の場合は、
最後に
session_id($yoursessionid);
session_start();
-----解決策----- ----- ----------
Redis はメモリに基づいており、セッションはファイルに基づいています
ハードディスクの損傷は怖くないですか?
------解決策---------
この件で何かわからないことはありますか?
心配するのは杞憂です、わかりますか?