PHP開発用の検証コード
多くのWebサイトではログイン時に認証コードが表示されます。以下では認証コード機能の実装方法を紹介します。
前のログイン ページのコードには次のセクションがあります:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="format-detection" content="telephone=no" /> <title>登录页面实例展示</title> <link rel="stylesheet" type="text/css" href="/phpMyAdmin/login.css"/> </head> <body> <p> <span> <input type="text" name="code" id="code" class="pf_ipt_verify w230" placeholder="验证码" autocomplete="off" tabindex="3"/> <img src="/phpMyAdmin/code.php" onClick="this.src='/phpMyAdmin/code.php?nocache='+Math.random()" style="cursor:hand"> </span> </p> </body> </html>
これは、ページに表示される確認コードの画像です。認証コード画像にクリックイベントを与えることで、画像を1回クリックすることで別の数値を変更することができます。
また、検証コードがどのように生成されるかは次のコードです:
<?php session_start(); Header("Content-type:image/PNG"); $im = imagecreate(150,45); $back = imagecolorallocate($im, 245, 245, 245); imagefill($im, 0,0, $back); $vcodes = ""; for($i = 0; $i < 4; $i++){ $font = imagecolorallocate($im, rand(100, 255), rand(0, 100), rand(100, 255)); $authnum = rand(0, 9); $vcodes .= $authnum; imagestring($im, 5, 50 + $i * 10, 20, $authnum, $font); } $_SESSION['VCODE'] = $vcodes; for($i=0;$i<200;$i++) { $randcolor = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255)); imagesetpixel($im, rand()%150, rand()%150, $randcolor); // } imagepng($im); imagedestroy($im); ?>
これはコード生成のためのバックグラウンドプログラムです。
ログインバックエンドコード内のコードを判定します。1つは入力があるかどうかを判定するもので、もう1つは入力が正しいかどうかを判定するものです。コードは次のとおりです:
if(!$_POST['code']){ echo('验证码不能为空'); return; }else if($_POST['code']!=$_SESSION['VCODE']){ echo('验证码不正确'); return; }