ホームページ >バックエンド開発 >PHPチュートリアル >ログイン認証の効率を向上するにはどうすればよいですか?

ログイン認証の効率を向上するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-13 12:03:20932ブラウズ

ログイン認証の効率を上げる方法を教えてください

この投稿の最終編集者は sky94132003 2014-07-25 21:02:14 最近構築したシステム

ログイン$_COOKIE を使用して行われます。

は識別子 ($identifier) と検証子 ($token) を自動的に生成し、それを
<br />$_COOKIE["auth"] = $identifier . ":" . $token ;<br />有做加密,在此先不提加密的事<br />


に保存します。
識別子 ($identifier) とバリデーター ($token) をそれぞれ SQL の 2 つのフィールドに保存します

と関数が作成され、操作が構成ファイルに導入されます

すべてのページが検証されるように

関数はおそらく

list($identifier, $token) =explode(':', $_COOKIE['auth']);以前に設定した $_COOKIE を取得します
識別子 ($identifier) と検証子 ($token)

次に、データベース内の 2 つの値を比較して、それらがまったく同じであるかどうかを確認します

それらが正しい場合は通常どおり動作し、等しくない場合は Clear
setcookie('auth', 'DELETED!', time()-1);


上記を行うことで、自動ログインの効果を得ることができます

効果と検証は正常に使用できますが、問題は、当社のWebサイト...難易度検証機能はデータベースにクエリする必要があることですすべてのページに一度?

何か他の方法はありますか?

基本的に考えているのは...個別のタイムアウトフィールドを作成し、それが空の場合は定期的にクリアする必要がありますか?また支払いますか?


少し頭が混乱しています。アドバイスをお願いします。

-----解決策---------1. 検証は必要な場合にのみ行われます。ユーザー データを使用してシステム データを変更する
2. 拡張検証は異なるデータ ソースから取得する必要があります。識別子と検証子を同じ方法で渡すことは無意味であり、自己欺瞞的です。
3. 「誰かを蹴る」必要がある場合は、常にチェックする必要があります。これは、カスタム セッション ハンドラー

を使用して実現できます------解決策---------------------------- ---- Cookie を直接取得し、サーバーのキーを使用して復号化します。変更されている場合、サーバーのキーを使用して復号化することはできないため、検証は必要ありません。

の場合たとえば、uid と有効期限を保存する場合、解決後、uid 情報を直接クエリしてグローバル変数に保存できます。解決後に uid がない場合は、改ざんされていることを意味します。再度ログインする必要があります

-----解決策--- ------------------
引用:よろしくお願いします
1. トラフィックが多いのが問題です
2. 書くのが面倒なので書きたくないです。 SESSION を使用するには、自動ログインを行うには COOKIE のみを使用する必要があります。

1. ロードの問題については実際の経験がありませんが、セッション ファイルはハッシュです。 、正しいインデックスを持つユーザーテーブルはツリーであると思います。前者の方が高速であり、すべてのページをクエリする必要があるため、データベース接続が多すぎるようです
2. Cookie とセッションは連携します。 、セッションは現在のログインを担当し、次回の自動ログインのために Cookie が保存されます
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。