ホームページ > バックエンド開発 > PHPチュートリアル > 前後にユーザー ログイン セッション ハンドラーはありますか?

前後にユーザー ログイン セッション ハンドラーはありますか?

WBOY
リリース: 2016-06-23 14:38:56
オリジナル
958 人が閲覧しました

管理者がバックエンドでログインするシステムを作成しました
一般の登録ユーザーがフロントエンドでログインするようにしました
フロントエンドとバックエンドで書いたセッションはすべてこのように記述され、自動ログインも作成しました。ログインしたセッションのみが存在できるということです。

if(empty($_SESSION['username']) && empty($_SESSION['uid'])){	$this->error("您还没有登陆",U("/Admin/Login/index"),3);}
ログイン後にコピー


その後、フロントデスクでユーザーを登録してログインしました。PHP は $_SESSION['username'] を記録し、バックエンドにログインしてバックエンドに入りました。

このように書いたことに何か問題があるのですが、解決方法を聞いてもよろしいでしょうか?
これが私の考えです: フロントエンドとバックエンドのセッション名は異なるままであるべきです。
たとえば、フロントエンドでは $_SESSION['username_index']
バックエンドでは $_SESSION['username_admin'] ですが、それでよいでしょうか?


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

フロントエンドとバックエンドに保存されたセッション変数が矛盾しています。どうすれば自動的にログインできますか?

もう 1 つの問題は、ログイン時に、ログイン ユーザー テーブルでユーザー情報をクエリする必要があることです。

もう 1 つの問題は、ログイン時に、ログイン ユーザー テーブルでユーザー情報をクエリする必要があることです。


まず最初に言っておきますが、それは私の間違いでした、
1. フロントエンドとバックエンドのセッション名が同じであることに最初は気づきませんでした。それらを矛盾させることが正式な慣行であるかどうかを尋ねたいです。 ?
2. バックグラウンドでの自動ログインを作成しました。これは大まかに次のように書かれています: バックグラウンドでセッションを検出する限り、認証なしで直接ログインできます

2 つの異なる SESSION を設定することは可能ですが、管理者テーブルを作成する必要があります。検証、彼がバックエンド管理者ではない場合、ログインは許可されません

あなたの状況では、判断ロジックを堂々巡りしないことをお勧めします

代わりに、思い切って追加します許可ワードの許可
フロントデスクの許可を 0 に設定します (もともと許可ワードがないため) バックグラウンドの許可は 1 です
ユーザーテーブルに許可フィールドを追加し、管理者ユーザーの許可を 1 に設定するだけです
ログインするときは、$_SESSION['permit'] のように権限を取り出してセッションに保存します
判定するときは、if($permit == ($permit & $_SESSION['permit'])) だけです
ここで、$permit はレイアウトに必要な権限です

あなたの状況では、判断ロジックを堂々巡りしないことをお勧めします

代わりに、思い切って許可ワード Permit を追加します
フロントエンドの権限を 0 に設定します (元々は許可ワードを持っていませんでした) とバックエンド許可を 1 にします
ユーザーテーブルに許可フィールドを追加し、管理者ユーザー許可を 1 に設定するだけです
ログインするときに、許可を取り出して保存します$_SESSION['permit'] などのセッション
判定する場合は、if($permit == ($permit & $_SESSION['permit'])) で可能です
式中の$permitはレイアウトです 必要な権限です

モデレーターv5!

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