悪意のある登録を防ぐために一般的に使用される方法は、ユーザーが登録情報を送信するときに、人間だけが認識できるようにグラフィックの確認コードをランダムに生成することです。もう少し複雑です。
今日は、PHP 検証コードを学習します。まず、簡単なデジタル検証コードを使用して実装します。まず、検証コードを生成するコードを作成します。
コードをコピー | |
//4桁の確認コードをランダムに生成します $num=""; for($i=0;$i<4;$i++){ $num .= rand(0,9); //4 桁の確認コードは、rand(1000,9999) を使用して直接生成することもできます //生成された検証コードを検証ページで使用するためにセッションに書き込みます Session_start(); $_SESSION["Checknum"] = $num; //画像を作成し、色の値を定義する Header(“Content-type: image/PNG”); srand((double)microtime()*1000000); $im = imagecreate(60,20); $black = ImageColorAllocate($im, 0,0,0); $gray = ImageColorAllocate($im, 200,200,200); imagefill($im,0,0,$gray); //干渉として機能する 2 本の点線をランダムに描画します $style = array($black, $black, $black, $black, $black, $gray, $gray, $gray, $gray, $gray); imagesetstyle($im, $style); $y1=ランド(0,20); $y2=ランド(0,20); $y4=ランド(0,20); イメージライン($im, 0, $y1, 60, $y3, IMG_COLOR_STYLED);イメージライン($im, 0, $y2, 60, $y4, IMG_COLOR_STYLED) // キャンバス上に多数の黒い点をランダムに生成して妨害します for($i=0;$i<80;$i++) { imagesetpixel($im, rand(0,60), rand(0,20), $black); //キャンバス上に4つの数字をランダムに表示し、文字の横方向の間隔と位置は一定の変動幅に従ってランダムに生成されます $strx=rand(3,8); for($i=0;$i<4;$i++){ $strpos=rand(1,6); 画像文字列($im,5,$strx,$strpos, substr($num,$i,1), $black); }ImagePNG($im); ?>
reg.php ページでフォームを記述します: (他の HTML コードはここでは省略されています) |
コードをコピー
確認コード: | ||
確認コード: |
コードは次のとおりです | コードをコピー |
Session_start(); //back_alert() 認証コードが間違って入力されると、エラーメッセージが表示されます 関数 back_alert($yzm){ echo ""; } //悪意のある呼び出しを禁止します(ブラウザでpost.phpページを直接開くことは禁止されています) if($_POST["yzm"]==null){ back_alert('確認コードを入力していませんね???'); // 悪質な登録は禁止ですif(!($_POST["yzm"]==$_SESSION["Checknum"])){ back_alert('認証コードが間違っています'); } echo $_POST["yzm"];
|