【ユーザーログイン判定】PHPの判定処理は正しいですか?毎回データベースにクエリを実行し、COOKIE を保存します
【ユーザーログイン判定】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 をクリアします ->通知ページにジャンプします

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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