ホームページ > バックエンド開発 > PHPチュートリアル > セッションを使用したログインに関するいくつかの問題

セッションを使用したログインに関するいくつかの問題

WBOY
リリース: 2016-06-23 13:53:49
オリジナル
1019 人が閲覧しました

こんな感じでセッションを使ったログインを書きました。ログインするときに、セッション ID を Redis に保存します。

次に、2 人のユーザーが同じアカウントにログインし、後でログインしたユーザーが先にログインしたユーザーを絞り出す機能を実装したいと思います。

私のアイデアの 1 つは、ログイン時に Redis に保存されているセッション ID を更新することです。ログインしたユーザーが操作を実行するたびに、ログイン時に保存されたセッション ID が現在のセッション ID と一致するかどうかを確認するために Redis にアクセスします。矛盾している場合は、ログインしていないことを意味します。しかし、これは redis を頻繁に読み込むことになるでしょうか?プレッシャーはあるでしょうか?

もう 1 つのアイデアは、ログイン時に最後に保存されたセッション ID を Redis から確実に取得できるということです。この方法では、以前にログインしたユーザーはセッション ファイルを取得できなくなります。まだログインしていません。この方法では、ログイン時にのみデータベースが読み取られ、データベースの読み取り回数は比較的少なくなります。ただし、セッション ID を使用してファイルを破棄する方法がわかりません~~

専門家の皆様、これら 2 つの方法のどちらが優れていますか? 2 番目の方法では、sessionid を使用してファイルを破棄するにはどうすればよいでしょうか?それとももっと良い方法があるのでしょうか?アドバイスありがとうございます


ディスカッション(解決策)への返信

2番目の方法がわかりません。 B がログインすると、session_id を取得し、A のセッション ファイルを破棄するという意味ですか?これを行う方法

2 番目の方法がわかりません。 B がログインすると、session_id を取得し、A のセッション ファイルを破棄するという意味ですか?どうすればこれができるのですか

まあ、それが私が言いたいことなので、それを行う方法を知りたいです。

それはできません。セッションはユーザーのブラウザに保存されます。同じコンピュータからログインしていない場合、どうすれば削除できますか? それとも、2 つのアカウント A と B は、同じコンピュータからのみログインしているということでしょうか?同じコンピュータ...

それはできません ああ、セッションはユーザーのブラウザに保存されています。同じコンピュータからログインしていない場合、どうすれば削除できますか? それとも、2 つのアカウント A という意味ですか?そして B は同じコンピューターからのみログインします...


つまり、サーバーに保存されているファイルをセッション ID を介して削除するだけです。この場合、ユーザー A はセッション ID を介してサーバーに保存されている情報を取得できません。 。


ログインするときに、セッション ID を Redis に保存します ユーザー名をキーとして使用しますか、それともセッション ID をキーとして使用しますか?


ユーザー名をキーとして使用する場合、ログインしていなくても、その値 (sessionid) が自分のものではない場合、redis にはユーザー名が 1 つだけ存在します。
sessionid をキーとして使用する場合は、クエリを実行する必要があります。対応するキー (複数のセッション ID を取得します)
これらのセッション ID を調べて、
session_id($sessionid); を実行します
session_id($your sessionid); );



ログインするときに、セッション ID を redis に保存します
キーとしてユーザー名を使用しますか、それともキーとしてセッション ID を使用しますか?

ユーザー名をキーとして使用する場合、ログインしていなくても、その値 (sessionid) が自分のものではない場合、redis にはユーザー名が 1 つだけ存在します。

sessionid をキーとして使用する場合は、クエリを実行する必要があります。ユーザー名に基づいて (複数のセッション ID を取得します)

これらの session_id($sessionid); を実行します

session_id($your sessionid); を実行します自分のものではないセッション ID ();

Web サイトを使用するにはログインする必要があるため、最初の質問は、ログインしているかどうかを確認するたびに Redis にアクセスしてクエリすることです。 . ストレスがかかりすぎるでしょうか?ユーザーベースはそれほど大きくはなく、おそらく多くても数万人程度でしょう。


redis はメモリに基づいており、セッションはファイルに基づいています
ハードディスクの損傷を恐れていませんか?


redis はメモリに基づいており、セッションはファイルに基づいています
ハードディスクの損傷を恐れていませんか?

最初の文は理解できますが、ハードドライブが破損しているため理解できません。モデレーターからアドバイスをお願いします。

この件について何かわからないことはありますか? 心配するのは杞憂です、わかりますか?


これについて何かわからないことはありますか?

心配するのは杞憂です、わかりますか?


わかりました。 3Qモデレーター〜

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート