PHP は完全かつ安全なユーザー ログイン システムを開発します
PHP でプログラミングするとき、私は PHPLib や他の同様のライブラリなどの既製のライブラリ ファイルを使用しない習慣があります。このシステムでは、認証を処理する必要があるライブラリ ファイルも自分で作成する予定です。電子メールの確認、アカウント (パスワード、電子メール) の更新など。
既存のデータベースへの負担を増やすことなくシステムのセキュリティを確保するため。したがって、この新しいシステムは Cookie に依存しています。これは確かにジレンマです。ユーザー名を使用して Cookie を設定するだけでは非常に安全ではないため、これは機能しませんが、データベースへの負担を考慮すると、単純な順序なしコードを追加して検証のためにデータベースに渡すことはできません。 。
解決策は、2 つの Cookie を同時に設定することです。1 つはユーザー名 Cookie、もう 1 つは順序なし Cookie です。この順序付けされていないコードは、実際には、md5() 関数操作を通じてユーザー名とスーパー パスワード (プログラマのみが知っている) の組み合わせによって生成されます。 md5() は一方向の不規則コードであるため、解読できません。ユーザーが電子メールを変更した場合、電子メールとスーパー パスワードを使用してランダム コードを生成し、ユーザーが変更を確認できるようにすることもできます。これは実際には公開鍵/秘密鍵タイプのシステムです。分かりませんか?関係ないので、以下ゆっくり解説していきます。
興味深いのは、このシステムの主な仕事は md5() 関数の値を計算することであり、負荷がかかると Web サーバーによって完了するため、このシステムのスケーラビリティは無限大に達する可能性があることです。認証システムがデータベース全体に影響を与えることはありませんが、追加することで最終的なボトルネックがデータベースにのみ現れることになります。
このライブラリには、トークン生成関数とトークン認証関数という 2 つの関数があります。
<?php<br> $hidden_hash_var='your_secret_password_here';<br> $LOGGED_IN=false;<br> unset($LOGGED_IN);<br> function user_isloggedin() {<br> global $user_name,$id_hash,$hidden_hash_var,$LOGGED_IN;<br> file://已经进行无序码的检测了吗<br> file://如果是的话,返回该变量<br> if ( isset($LOGGED_IN) ) {<br> return $LOGGED_IN;<br> }<br> file://are both cookies present?<br> if ($user_name && $id_hash) {<br> /*<br> 由cookies中得来的用户名和系统超级密码产生一个认证用的无序码如果该无序码与cookie中的无序码一样,则cookies中的变量是可信的,用户已经登录<br> */<br> $hash=md5($user_name.$hidden_hash_var);<br> if ($hash == $id_hash) {<br> file://无序码符合,设置一个全局变量,这样我们在再次调用该函数的时候,<br> file://就无需再次进行md5()运算<br> $LOGGED_IN=true;<br> return true;<br> } else {<br> file://两个无序码不符合,没有登录<br> $LOGGED_IN=false;<br> return false;<br> }<br> } else {<br> $LOGGED_IN=false;<br> return false;<br> }<br> }<br> function user_set_tokens($user_name_in) {<br> /*<br> 一旦用户名和密码通过验证,就调用这个函数<br> */<br> global $hidden_hash_var,$user_name,$id_hash;<br> if (!$user_name_in) {<br> $feedback .= ' ERROR - User Name Missing When Setting Tokens ';<br> return false;<br> }<br> $user_name=strtolower($user_name_in);<br> file://使用用户名和超级密码创建一个无序码,作判断是否已经登录用<br> $id_hash= md5($user_name.$hidden_hash_var);<br> file://设置cookies的有效期为一个月,可设置为任何的值<br> setcookie('user_name',$user_name,(time()+2592000),'/','',0);<br> setcookie('id_hash',$id_hash,(time()+2592000),'/','',0);<br> }<br> ?>
別の興味深いコードを見てみましょう。ユーザーはどのようにしてメール アドレスを安全に変更できるでしょうか。電子メール アドレスはいつでも変更できますが、確認が必要です。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









ハッシュ演算 //ハッシュテーブルのフィールドに値を代入します。成功した場合は 1 を返し、失敗した場合は 0 を返します。ハッシュ テーブルが存在しない場合は、まずテーブルが作成されてから値が割り当てられ、フィールドが既に存在する場合は古い値が上書きされます。 $ret=$redis->hSet('user','realname','jetwu');//ハッシュ テーブル内の指定されたフィールドの値を取得します。ハッシュ テーブルが存在しない場合は false を返します。 $ret=$redis->hGet('ユーザー','rea

Laravel は現在最も人気のある PHP Web フレームワークの 1 つであり、開発者に多くの強力な機能とコンポーネントを提供しており、LaravelHash もその 1 つです。 LaravelHash は、パスワードを安全に保ち、アプリケーションのユーザー データをより安全にするために使用できるパスワード ハッシュ用の PHP ライブラリです。この記事では、LaravelHash の仕組みと、LaravelHash を使用してパスワードをハッシュし検証する方法を学びます。 Lara を学習するための前提知識

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Docker では、マウント ディレクトリの権限の問題は通常、-v パラメータを使用してマウント ディレクトリを指定するときに権限関連のオプションを追加することで解決できます。マウントされたディレクトリのアクセス許可を指定するには、マウントされたディレクトリの後に ro または :rw を追加します。それぞれ、読み取り専用と読み取り/書き込みアクセス許可を示します。例: dockerrun-v/host/path:/container/path:roimage_name Dockerfile で USER ディレクティブを定義してコンテナ内で実行するユーザーを指定し、コンテナ内での操作が権限要件に準拠していることを確認します。例: FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

1. ハッシュアルゴリズムとは? ハッシュとハッシングはどちらもハッシュという言葉から来ており、前者は音訳、後者は意訳です。任意の長さのバイナリ値を固定長のバイナリ値にマッピングできるアルゴリズムで、マッピングされた固定長のバイナリ値をハッシュ値と呼びます。優れたハッシュ アルゴリズムは、次の要件を満たす必要があります: ハッシュ値から元のデータを逆に推定できないこと、入力データの影響を非常に受けやすく、ビットが異なるとハッシュ値が大きく異なることになること、ハッシュの確率が高いこと競合は非常に小さい必要があります; ハッシュ アルゴリズムの計算プロセスは単純かつ効率的である必要があり、元のデータが非常に長い場合でも、ハッシュ値を迅速に取得できます; 2. ハッシュ アルゴリズムの使用シナリオ 2.1 安全な暗号化 詳細一般的なハッシュ暗号化アルゴリズムには MD5 (MD5 Message-Dige) が含まれます。

form要素のnameとidの値が異なるとブラウザが認識できないため、PHPが名前を取得できない 解決策: 1. 一部のform要素やframe要素がnameを使用していないか確認する; 2. 取得できる要素のみを確認するID は割り当てられますが、名前は割り当てられません; 3. 複数選択ボックスのチェックボックスでは、「join(',', $__POST['name'])」を使用してデータを形成できます。

ハッシュ法の主な考え方は、キー値に基づいてノードのストレージ アドレスを決定することです。キー値 K を独立変数として取り、特定の関数関係 h(K) (ハッシュ関数と呼ばれます) を通じて、ノードのストレージ アドレスを決定します。 、対応する関数値が来ます

Redis データ型の共通操作 Hash Redis の Hash は、文字列型のフィールドと値のマッピング テーブルです。オブジェクトの保存に特に適しており、各ハッシュは 40 億を超えるキーと値のペアを保存できます。 Python に慣れている子供用の靴は、Python を辞書の辞書と考えることができます。以前のデータ型ストレージは k-v で、ハッシュ ストレージは k-dict で、dict には独自の k-v が設定されます。 1. hset はハッシュ テーブルのフィールドに値を割り当てますが、ハッシュ テーブルが存在しない場合は、新しいハッシュ テーブルを作成して hset 操作を実行します。フィールドがハッシュ テーブルにすでに存在する場合、古い値は上書きされます。 hsetmyhashk1v1 2、h
