管理者がバックエンドでログインするシステムを作成しました
一般の登録ユーザーがフロントエンドでログインするようにしました
フロントエンドとバックエンドで書いたセッションはすべてこのように記述され、自動ログインも作成しました。ログインしたセッションのみが存在できるということです。
if(empty($_SESSION['username']) && empty($_SESSION['uid'])){ $this->error("您还没有登陆",U("/Admin/Login/index"),3);}
もう 1 つの問題は、ログイン時に、ログイン ユーザー テーブルでユーザー情報をクエリする必要があることです。
もう 1 つの問題は、ログイン時に、ログイン ユーザー テーブルでユーザー情報をクエリする必要があることです。
まず最初に言っておきますが、それは私の間違いでした、
1. フロントエンドとバックエンドのセッション名が同じであることに最初は気づきませんでした。それらを矛盾させることが正式な慣行であるかどうかを尋ねたいです。 ?
2. バックグラウンドでの自動ログインを作成しました。これは大まかに次のように書かれています: バックグラウンドでセッションを検出する限り、認証なしで直接ログインできます
あなたの状況では、判断ロジックを堂々巡りしないことをお勧めします
代わりに、思い切って追加します許可ワードの許可
フロントデスクの許可を 0 に設定します (もともと許可ワードがないため) バックグラウンドの許可は 1 です
ユーザーテーブルに許可フィールドを追加し、管理者ユーザーの許可を 1 に設定するだけです
ログインするときは、$_SESSION['permit'] のように権限を取り出してセッションに保存します
判定するときは、if($permit == ($permit & $_SESSION['permit'])) だけです
ここで、$permit はレイアウトに必要な権限です
代わりに、思い切って許可ワード Permit を追加します
フロントエンドの権限を 0 に設定します (元々は許可ワードを持っていませんでした) とバックエンド許可を 1 にします
ユーザーテーブルに許可フィールドを追加し、管理者ユーザー許可を 1 に設定するだけです
ログインするときに、許可を取り出して保存します$_SESSION['permit'] などのセッション
判定する場合は、if($permit == ($permit & $_SESSION['permit'])) で可能です
式中の$permitはレイアウトです 必要な権限です
モデレーターv5!