検索
ホームページバックエンド開発PHPチュートリアル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(): 線を描画 線分

imagesetpixel(): ピクセルを描画 imagepng(): 画像をブラウザまたは PNG 形式でファイルに出力

imagedestroy(): 画像が占有しているメモリを解放します<p></p>簡単に呼び出せるように、上記のコードを code_num.php として保存します。 <p></p> <p class="jb51code"></p>Ajax の更新と検証<p></p> <p></p> 検証コードが生成された後、それを実際のプロジェクトに適用する必要があります。通常、検証コードをクリックすると、Ajax を使用して更新し、新しい検証コードを生成します (場合によっては、生成された検証コードが生成されることもあります)。確認コードは肉眼では非常にわかりにくい)識別するのが難しい)、つまり「はっきりと見えない」ということです。検証コードを入力した後、検証コードが正しいかどうかを検証する必要があります。検証プロセスはバックグラウンド プログラムによって完了しますが、ajax を使用して更新なしの検証を実現することもできます。 <p class="jb51code"></p>フロントエンド ページのindex.htmlを作成し、jQueryをロードし、本文に検証コードのフォーム要素を追加します: <p></p> <p><pre class='brush:php;toolbar:false;'>&lt;p&gt;验证码:&lt;input type=&quot;text&quot; class=&quot;input&quot; id=&quot;code_num&quot; name=&quot;code_num&quot; maxlength=&quot;4&quot; /&gt; &lt;img src=&quot;/static/imghwm/default1.png&quot; data-src=&quot;code_num.php&quot; class=&quot;lazy&quot; id=&quot;getcode_num&quot; title=&quot;看不清,点击换一张&quot; align=&quot;absmiddle&quot; alt=&quot;PHPでさまざまなランダムな検証コードを生成する方法&quot; &gt;&lt;/p&gt; &lt;p&gt;&lt;input type=&quot;button&quot; class=&quot;btn&quot; id=&quot;chk_num&quot; value=&quot;提交&quot; /&gt;&lt;/p&gt;</pre></p> <p class="jb51code"></p> HTMLコードでは、<img src="/static/imghwm/default1.png" data-src="code_num.php" class="lazy" alt="PHPでさまざまなランダムな検証コードを生成する方法" ><p><pre class='brush:php;toolbar:false;'>$(function(){ //数字验证 $(&quot;#getcode_num&quot;).click(function(){ $(this).attr(&quot;src&quot;,&amp;#39;code_num.php?&amp;#39; + Math.random()); }); ... });</pre></p> <p class="jb51code"></p> 検証コードを更新するということは、実際には検証コード生成プログラムを再要求することを意味します。 code_num.php を呼び出すとき、ランダムなパラメータのキャッシュを防止します。次に、確認コードを入力した後、「送信」ボタンをクリックすると、フロントエンドは $.post() を通じて、バックグラウンドの chk_code.php に ajax リクエストを送信します。 <p></p> <p><pre class='brush:php;toolbar:false;'>$(function(){ ... $(&quot;#chk_num&quot;).click(function(){ var code_num = $(&quot;#code_num&quot;).val(); $.post(&quot;chk_code.php?act=num&quot;,{code:code_num},function(msg){ if(msg==1){ alert(&quot;验证码正确!&quot;); }else{ alert(&quot;验证码错误!&quot;); } }); }); });</pre></p> <p></p>バックエンド chk_code.php 検証: <p class="art_xg"></p> <h4><pre class='brush:php;toolbar:false;'>session_start(); $code = trim($_POST[&amp;#39;code&amp;#39;]); if($code==$_SESSION[&quot;helloweba_num&quot;]){ echo &amp;#39;1&amp;#39;; }</pre></h4> <p><a href="http://www.php.cn/php-weizijiaocheng-397373.html" target="_blank"> バックエンドは、送信された検証コードとセッションに保存された検証コードの比較に基づいて検証を完了します。 <span style="color:#f01414;"></span>他の検証の生成と使用についても、開発者は必要に応じて複数のスタイルのランダム検証コードを生成できます。この記事のデモでは、数値検証コード、数字 + 文字検証コード、中国語検証コードが提供されます。 、模造Google認証コード、算術認証コードなど。 </a><br></p> <p>関連する推奨事項: <a href="http://www.php.cn/php-weizijiaocheng-397071.html" target="_blank"><span style="color:#f01414;"></span>php画像</a>検証コード<br>コード_phpスキルの生成</p> <p><a href="http://www.php.cn/php-weizijiaocheng-397019.html" target="_blank"><span style="color:#f01414;"></span>実践的なphpの分析例</a>検証コード<br>クラス</p> <p></p> <p class="clearfix"><span class="jbTestPos">Webページを実装するためのphpコード</span> 詳細関数メソッドの説明</p>🎜🎜🎜🎜🎜🎜🎜🎜

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

See all articles

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

Video Face Swap

Video Face Swap

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

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。