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衣類リムーバー

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

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック









