ホームページ バックエンド開発 PHPチュートリアル 【ユーザーログイン判定】PHPの判定処理は正しいですか?毎回データベースにクエリを実行し、COOKIE を保存します

【ユーザーログイン判定】PHPの判定処理は正しいですか?毎回データベースにクエリを実行し、COOKIE を保存します

Jun 13, 2016 am 11:59 AM
cookie cookies gt nbsp session

【ユーザーログイン判定】PHPの判定処理は正しいですか?毎回データ インベントリ COOKIE をクエリします
ユーザーがログインしているかどうかを判断するために独自の PHP を作成しました:

[プロセス]
1 まず cookie('uid') があるかどうかを判断します && cookie('uid' ) ループからの飛び出しがない場合は検出
2 ある場合は、データベースに接続して uid に対応するレコードをクエリし、レコードに変化がない場合はループから抜け出します。ループを検出し、すべてのユーザー cookie をログアウトします
3 存在する場合は、cookie('upwd')= = md5($rs[pwd].cookie('salt')) を検出します。それらが等しくない場合は、プロンプトが表示されます。パスワードが変更されたため、再度ログインする必要があることを示します
4 それらが等しい場合は、cookie('email') == md5($rs[email ]) を確認します。等しくない場合は、次のメッセージが表示されます。メールボックスが変更されたため、再度ログインする必要があります
5 それらが等しい => 正しい場合、そのユーザーは現在ログインしているユーザーです。

でも!
[問題]
1 毎回データベースに接続する必要があるため、データベース クエリを減らすことがユーザー最適化の鍵となります。データベースに毎回クエリを実行すると、パフォーマンスに大きな影響を与えます。
2 最適化する方法は何ですか? このログイン判定プロセスは間違っていますか?

【別の考え方】
1 SESSION に保存し、$uid、$uname、$lastactive (最終応答時間) をセッションに保存します。
2 time()-$lastactive > 3600 を検出するための session('uid') && session('uname') がある場合は、データベースに接続して (上記の Cookie によって判断されます)、それ以外の場合は直接クエリします。 use (セッションの保存場所 php .ini のデフォルト設定の場所)

【質問】
1 SESSION に保存した場合、同時実行性が高い場合は影響を受けますか?


-----解決策---------------------------- -
2 番目のソリューションを使用する場合、最初のソリューションを選択したとき、高い同時実行性が懸念されました。
では、最初のソリューションを採用する場合、高い同時実行性は無視できますか。

最初のソリューションでは、ユーザーのパスワードと電子メールが Cookie に保存されています。このデータは常にネットワーク上で動作しています。安全だと思いますか?

データベースは一般化する必要があります
ファイル システム ベースのリレーショナル データベース (SQL) は若干遅いかもしれませんが、すべてメモリ ベースのメモリ テーブルを提供します
データベースには別のブランチがあることは言うまでもありません: メモリベースの noSQL
そのため、データベース クエリによって生じる追加のオーバーヘッドは無視できます

ユーザーがログインしているかどうかを判断するプロセスは次のとおりです。
Cookie('uid') が存在しない場合、リクエストを転送します。 ログイン処理
それ以外の場合は、データベースにクエリを実行して、uid の最後のログイン場所が今回と同じかどうかを確認します。
同じ場合は確認します。
異なる場合は、プロンプトを発行し、条件付きでリクエストログイン処理に転送
-- ----解決策-----
これが私のやり方です。
1. ユーザーがログインしてデータベースに接続し、成功したかどうかを判定します。成功した場合は、セッションと Cookie にユーザー ID、ユーザー名などの情報を書き込みます。 (たとえば、1 日から 2 週間まで、これはユーザーがログイン時に選択できるようにします) さらに、Cookie に保存されたデータの json_encode を作成し、それを暗号化しました。
たとえば、{"uid":1,"username":"fdipzone"} は、可逆文字列に暗号化されます。

2. ユーザーがアクセスすると、次のような状況になります。
1. セッションが存在するかどうかを確認します -> はい -> パス
2. セッションが存在するかどうかを確認します ->いいえ-> クッキーが存在するかどうかを確認します-> はい-> セッションにクッキーを書き込みます-> いいえ- > Cookie が存在するかどうかを判断します -> はい -> Cookie の復号化が成功したかどうかを判断します -> いいえ -> ログイン ページに移動します
4. セッションが存在するかどうかを判断します ->いいえ ->存在します -> ;いいえ->ログインページにジャンプします

-----解決策---------訂正です。
セッションの有効期限が切れたら、セッションに Cookie を書き込みます。この場所でデータベースに接続し、ユーザーのログインが禁止されているかどうかが判断されます。
セッションには独自の有効期限があるため、各データベースチェック間の時間間隔がセッションのライフサイクルになります。

セッションが存在するかどうかを判断します -> いいえ -> Cookie が存在するかどうかを判断します -> はい -> Cookie の復号化が成功したかどうかを判断します -> はい ->
ログインしているかどうかを確認します禁止されています -> いいえ -> セッションに Cookie を書き込みます ->
を使用してセッションが存在するかどうかを判断します -> いいえ -> Cookie が存在するかどうかを判断します -> はい -> 判断しますCookie の復号化が成功したかどうか - > はい ->
ログインが禁止されているかどうかを確認します ->はい -> ユーザーの Cookie をクリアします ->通知ページにジャンプします

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11で明るさを調整する10の方法 Windows 11で明るさを調整する10の方法 Dec 18, 2023 pm 02:21 PM

画面の明るさは、最新のコンピューティング デバイスを使用する上で不可欠な部分であり、特に長時間画面を見る場合には重要です。目の疲れを軽減し、可読性を向上させ、コンテンツを簡単かつ効率的に表示するのに役立ちます。ただし、設定によっては、特に新しい UI が変更された Windows 11 では、明るさの管理が難しい場合があります。明るさの調整に問題がある場合は、Windows 11 で明るさを管理するすべての方法を次に示します。 Windows 11で明るさを変更する方法【10の方法を解説】 シングルモニターユーザーは、次の方法でWindows 11の明るさを調整できます。これには、ラップトップだけでなく、単一のモニターを使用するデスクトップ システムも含まれます。はじめましょう。方法 1: アクション センターを使用する アクション センターにアクセスできる

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

iPhoneのSafariでプライベートブラウジング認証をオフにする方法は? iPhoneのSafariでプライベートブラウジング認証をオフにする方法は? Nov 29, 2023 pm 11:21 PM

iOS 17 では、Apple はモバイル オペレーティング システムにいくつかの新しいプライバシーおよびセキュリティ機能を導入しました。その 1 つは、Safari のプライベート ブラウジング タブに対して 2 段階認証を要求する機能です。その仕組みとオフにする方法は次のとおりです。 iOS 17 または iPadOS 17 を実行している iPhone または iPad では、Safari でプライベート ブラウズ タブを開いていて、再度アクセスするためにセッションまたはアプリを終了する場合、Apple のブラウザでは Face ID/Touch ID 認証またはパスコードが必要になります。言い換えれば、ロックが解除されている iPhone または iPad を誰かが手に入れても、パスコードを知らなければプライバシーを閲覧することはできません。

Win10/11 デジタル アクティベーション スクリプト MAS バージョン 2.2 がデジタル アクティベーションを再サポート Win10/11 デジタル アクティベーション スクリプト MAS バージョン 2.2 がデジタル アクティベーションを再サポート Oct 16, 2023 am 08:13 AM

有名なアクティベーション スクリプト MAS2.2 バージョンでは、デジタル アクティベーションが再びサポートされています。このメソッドは @asdcorp とそのチームが考案したもので、MAS 作成者はそれを HWID2 と呼んでいます。 https://github.com/massgravel/Microsoft-Activation-Scripts から Gatherosstate.exe (オリジナルではなく、変更されたもの) をダウンロードし、パラメータを指定して実行し、AuthenticTicket.xml を生成します。まず元のメソッド: Gatherosstate.exePfn=xxxxxxx;DownlevelOriginalState=1 を確認し、次に最新のメソッド: Gatheros と比較します。

Cookie はどこに保存されますか? Cookie はどこに保存されますか? Dec 20, 2023 pm 03:07 PM

Cookie は通常、ブラウザの Cookie フォルダに保存されます。ブラウザの Cookie ファイルは通常、バイナリ形式または SQLite 形式で保存されます。Cookie ファイルを直接開くと、文字化けしたり判読できないコンテンツが表示される可能性があるため、使用することをお勧めします。 Cookie を表示および管理するためにブラウザによって提供される Cookie 管理インターフェイス。

コンピューター上の Cookie はどこにありますか? コンピューター上の Cookie はどこにありますか? Dec 22, 2023 pm 03:46 PM

コンピュータ上の Cookie は、使用するブラウザとオペレーティング システムに応じて、ブラウザ上の特定の場所に保存されます。 1. Google Chrome、C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies に保存されます。等

セッション失敗を解決する方法 セッション失敗を解決する方法 Oct 18, 2023 pm 05:19 PM

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

PHP セッションのクロスドメイン問題の解決策 PHP セッションのクロスドメイン問題の解決策 Oct 12, 2023 pm 03:00 PM

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

See all articles