ホームページ バックエンド開発 PHPチュートリアル PHPでさまざまなランダムな検証コードを生成する方法

PHPでさまざまなランダムな検証コードを生成する方法

May 22, 2018 am 09:17 AM
php ランダム 確認する

この記事では、PHP でさまざまなランダム検証コードを生成する方法を主に紹介し、具体的な例に基づいて PHP で検証コードを生成する一般的な手法をまとめて分析します。また、読者がダウンロードして参照できるデモ ソース コードも付属しています。必要な人は参照してください

詳細は次のとおりです:

認証コードは、通常、ユーザーが悪意のある登録やログイン、悪意のあるフォーラムのスパム送信など、悪意のあるフォームを送信するのを防ぐために使用されます。 。この記事では、PHP を使用して、数値検証コード、数値 + 文字検証コード、中国語検証コード、算術検証コードなどのさまざまな一般的な検証コードを生成する方法と、Ajax 検証プロセスについて例を示して説明します。

ここをクリックして、このサイトからサンプルソースコードをダウンロードしてください。

PHPは認証コード画像を生成します

PHPが認証コードを生成する原理: PHPのGDライブラリを使用して認証コードを含む画像を生成し、認証コードをセッションに保存します。 PHP による検証コードの生成の一般的なプロセスは次のとおりです。

1. PNG 画像を生成します。

3. フォントの色とスタイルを設定します。 -桁の乱数検証コード

5. 生成された各文字の回転角度と位置を調整して、PNG 画像上に描画します。6. 登録マシンが元の画像を不正に分析するのを防ぎます。検証コードを解読します。

7. 画像が占有しているメモリを解放します。

サンプルコード:

session_start();
getCode(4,60,20);
function getCode($num,$w,$h) {
  $code = "";
  for ($i = 0; $i < $num; $i++) {
    $code .= rand(0, 9);
  }
  //4位验证码也可以用rand(1000,9999)直接生成
  //将生成的验证码写入session,备验证时用
  $_SESSION["helloweba_num"] = $code;
  //创建图片,定义颜色值
  header("Content-type: image/PNG");
  $im = imagecreate($w, $h);
  $black = imagecolorallocate($im, 0, 0, 0);
  $gray = imagecolorallocate($im, 200, 200, 200);
  $bgcolor = imagecolorallocate($im, 255, 255, 255);
  //填充背景
  imagefill($im, 0, 0, $gray);
  //画边框
  imagerectangle($im, 0, 0, $w-1, $h-1, $black);
  //随机绘制两条虚线,起干扰作用
  $style = array ($black,$black,$black,$black,$black,
    $gray,$gray,$gray,$gray,$gray
  );
  imagesetstyle($im, $style);
  $y1 = rand(0, $h);
  $y2 = rand(0, $h);
  $y3 = rand(0, $h);
  $y4 = rand(0, $h);
  imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED);
  imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED);
  //在画布上随机生成大量黑点,起干扰作用;
  for ($i = 0; $i < 80; $i++) {
    imagesetpixel($im, rand(0, $w), rand(0, $h), $black);
  }
  //将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
  $strx = rand(3, 8);
  for ($i = 0; $i < $num; $i++) {
    $strpos = rand(1, 6);
    imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);
    $strx += rand(8, 12);
  }
  imagepng($im);//输出图片
  imagedestroy($im);//释放图片所占内存
}
ログイン後にコピー

このコードでは、カスタム関数 getCode() で検証コードの生成プロセスが説明されています。 PHP GD ライブラリに付属する画像処理機能を使用すると、さまざまな画像効果を簡単に生成できます。 imagecreate(): 新しい画像を作成します

imagecolorallocate(): 画像に色を割り当てます

imagefill(): 塗りつぶし画像

imagerectangle(): 四角形 (枠線) を描画します getCode()诠释了验证码的生成过程。运用PHP GD库自带的图像处理函数,能轻松生成各种想要的图片效果。

imagecreate():创建一个新图像

imagecolorallocate():为图像分配颜色

imagefill():填充图像

imagerectangle():画一个矩形(边框)

imagesetstyle():设置画线风格

imageline():画一条线段

imagesetpixel():画点像素

imagepng():以PNG格式将图像输出到浏览器或文件

imagedestroy()

imagesetstyle(): 線の描画スタイルを設定します

imageline()</code >: 線を描画 線分 <p><span style="font-size: medium"><code>imagesetpixel(): ピクセルを描画 imagepng(): 画像をブラウザまたは PNG 形式でファイルに出力

imagedestroy()< /code>: 画像が占有しているメモリを解放します

簡単に呼び出せるように、上記のコードを code_num.php として保存します。

Ajax の更新と検証

検証コードが生成された後、それを実際のプロジェクトに適用する必要があります。通常、検証コードをクリックすると、Ajax を使用して更新し、新しい検証コードを生成します (場合によっては、生成された検証コードが生成されることもあります)。確認コードは肉眼では非常にわかりにくい)識別するのが難しい)、つまり「はっきりと見えない」ということです。検証コードを入力した後、検証コードが正しいかどうかを検証する必要があります。検証プロセスはバックグラウンド プログラムによって完了しますが、ajax を使用して更新なしの検証を実現することもできます。

フロントエンド ページのindex.htmlを作成し、jQueryをロードし、本文に検証コードのフォーム要素を追加します:

<p>验证码:<input type="text" class="input" id="code_num" name="code_num" maxlength="4" />
<img src="code_num.php" id="getcode_num" title="看不清,点击换一张" align="absmiddle"></p>
<p><input type="button" class="btn" id="chk_num" value="提交" /></p>
ログイン後にコピー

HTMLコードでは、

$(function(){
  //数字验证
  $("#getcode_num").click(function(){
    $(this).attr("src",&#39;code_num.php?&#39; + Math.random());
  });
  ...
});
ログイン後にコピー

検証コードを更新するということは、実際には検証コード生成プログラムを再要求することを意味します。 code_num.php を呼び出すとき、ランダムなパラメータのキャッシュを防止します。次に、確認コードを入力した後、「送信」ボタンをクリックすると、フロントエンドは $.post() を通じて、バックグラウンドの chk_code.php に ajax リクエストを送信します。

$(function(){
  ...
  $("#chk_num").click(function(){
    var code_num = $("#code_num").val();
    $.post("chk_code.php?act=num",{code:code_num},function(msg){
      if(msg==1){
        alert("验证码正确!");
      }else{
        alert("验证码错误!");
      }
    });
  });
});
ログイン後にコピー

バックエンド chk_code.php 検証:

session_start();
$code = trim($_POST[&#39;code&#39;]);
if($code==$_SESSION["helloweba_num"]){
  echo &#39;1&#39;;
}
ログイン後にコピー

バックエンドは、送信された検証コードとセッションに保存された検証コードの比較に基づいて検証を完了します。 他の検証の生成と使用についても、開発者は必要に応じて複数のスタイルのランダム検証コードを生成できます。この記事のデモでは、数値検証コード、数字 + 文字検証コード、中国語検証コードが提供されます。 、模造Google認証コード、算術認証コードなど。

関連する推奨事項: php画像検証コード
コード_phpスキルの生成

実践的なphpの分析例検証コード
クラス

Webページを実装するためのphpコード 詳細関数メソッドの説明

🎜🎜🎜🎜🎜🎜🎜🎜

以上がPHPでさまざまなランダムな検証コードを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles