この投稿の最終編集者は 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. Cookie とセッションは連携します。 、セッションは現在のログインを担当し、次回の自動ログインのために Cookie が保存されます