認証コードがウェブサイトの登録、ログイン、その他多くのことに必要な機能であることは誰もが知っています。確認コードがないと、Web サイトのセキュリティが大幅に脅かされます。したがって、認証コードはウェブサイトの開発プロセスにおいて不可欠な機能であり、認証コードの効果はウェブサイトのセキュリティに直接影響します。 (ここのブロガーも認証コード機能について苦情を言っていました。本当に面倒です。毎回認証コードを入力しなければなりません。本当に面倒です。少し前に、12306 も動的認証コードを発行しました。そこで言いたいのですが)寮には誰も正しく入力できません。このクソ機能を廃止する代替機能がすぐにリリースされることを願っています。一日中認証コードに直面するのを好むユーザーは多くないと思います。さて、これ以上ナンセンスはありません。
最初にマインド マップを使用して全体的なアイデアを明確にします:
auth.php の GD ライブラリを使用して描画し、検証コードの背景を配置し、背景にランダムに生成された文字列を追加し、文字を追加します。同時に、文字列はセッションに保存され、どのページでも検証コードを抽出できるようになります。 form.html に簡単なログイン フォームを記述し、 タグを使用して auth.php に検証コードを読み込みます。次に、データを submit.php ページに送信します。 submit.php では、まず検証コードの検証 (ユーザー名とパスワードについてはここでは説明しません) を実行し、その前にセッションに格納されている文字列が form.html で送信された検証コードの文字列と同じであるかどうかを確認します。大文字と小文字を区別しないようにするには、文字列を常に小文字に変換します。文字列が同じ場合はページがジャンプします。異なる場合は、ログイン ページに戻ります。
1.auth.php rrree(1) ヘッダーの前に出力はありません
(2) セッションを使用する前にセッションを開く必要があります
2.form.html<?phpheader("content-type:text/html;charset=utf-8");//开启sessionsession_start();//准备画布$im=imagecreatetruecolor(50,25);//准备涂料$black=imagecolorallocate($im,0,0,0);$gray=imagecolorallocate($im,200,200,200);//背景填充imagefill($im,0,0,$gray);//文字居中$x=(50-10*4)/2;$y=(25-5)/2+5;//准备文字$arr=array_merge(range(0,9),range('a','z'),range('A','Z'));shuffle($arr);$str=implode(array_slice($arr,0,4));//把$str放入session中,方便所有页面中调用$_SESSION['vstr']=$str;$file="fonts/simsun.ttc";imagettftext($im,10,0,$x,$y,$black,$file,$str);//输出到浏览器上或保存起来header("content-type:image/png");imagepng($im);//关闭画布imagedestory($im);?>(1) メソッドの送信メソッドは post
(2) テキストボックスと認証コードの連携を図る
3.submit.php<html> <head> <meta charset="utf-8"> <title>登录</title> <style> table{ border-collapse:collapse; } img{ margin-top:5px; } </style> </head> <body> <h2>用户登录页面</h2> <hr> <table width="500px" border="1px"> <form action="submit.php" method="post"> <tr> <td>姓 名:</td> <td><input type="text" name="username" id=""></td> </tr> <tr> <td>密 码:</td> <td><input type="password" name="password" id=""></td> </tr> <tr> <td>验证码:</td> <td><input type="text" name="vcode"> <img src="auth.php"></td> </tr> <tr> <td><input type="submit" value="提交"></td> <td><input type="reset" value="重置"></td> </tr> </form> </table> </body></html>(1) strto lower() を使用するすべての文字列を小文字に変換すると、検証コードの大文字と小文字を区別する面倒なプロセスが不要になります。
(2) if ステートメントを使用して、2 つの文字列が true に等しいかどうかを判断します。
(3) 直接ジャンプするために、ジャンプする必要があるアドレスを <script>location=''</script> の中に追加します。もちろん、header() を使用することもできますが、header() の前に出力を置くことはできず、制限が多すぎます。 jsを使った方が良いです。