この記事では主にPHPで動的ランダム検証コードを作成する方法に関する関連情報を紹介しますので、必要な方は参考にしてください
。
CAPTCHAとは、「Completely Automated Public Turing test to Tell Computers and Humans Apart」の略で、ユーザーがコンピュータであるか人間であるかを識別するための公開された完全自動プログラムです。これにより、悪意のあるパスワードのクラッキング、チケット詐欺、フォーラムのフラッディングが防止され、ハッカーが特定のプログラムを使用して特定の登録ユーザーが継続的にログイン試行することを効果的に阻止できます。実際、確認コードの使用は、多くのユーザーにとって一般的な方法です。この機能は比較的簡単な方法で実装されています。
この質問はコンピューターによって生成され、判断されますが、答えることができるのは人間だけです。コンピュータは CAPTCHA の質問に答えることができないため、質問に答えるユーザーは人間であると考えられます。
Php は PHP 画像処理に基づいて動的検証コードを生成します。まず、PHP 画像処理について説明します。
1.php画像処理入門
PHP5 では、動的な画像の処理が以前よりもはるかに簡単になりました。 PHP5 には、php.ini ファイルに GD 拡張機能パッケージが含まれています。通常に使用するには、GD 拡張機能パッケージの対応するコメントを削除するだけで済みます。 PHP5 に含まれる GD ライブラリは、アップグレードされた GD2 ライブラリであり、トゥルー カラー画像処理をサポートするいくつかの便利な JPG 関数が含まれています。
一般的に生成されたグラフィックスは PHP のドキュメント形式で保存されますが、動的なグラフィックスは HTML の画像挿入メソッド SRC を通じて直接取得できます。たとえば、確認コード、ウォーターマーク、サムネイルなどです。
画像を作成するための一般的なプロセス:
1). 生成したい MIME タイプをブラウザーに伝えるヘッダーを設定します。
2). 画像領域を作成し、その後のすべての操作はこの画像領域に基づいて行われます。
3).空白の画像領域に塗りつぶされた背景を描画します。
4). 背景にグラフィックの輪郭を描いてテキストを入力します。
5).最終的なグラフィックを出力します。
6) すべてのリソースをクリアします。
7). 他のページから画像を呼び出します。
最初のステップは、ファイルの MIME タイプと出力タイプを設定することです。出力タイプを画像ストリームに変更します。
コードは次のとおりです:
一般的に生成される画像は、png、jpeg、gif、wbmp です
2 番目のステップは、グラフィックス領域と画像の背景を作成することです
imagecreatetruecolor() は、サイズ x_size および y_size の黒い画像を表す画像識別子を返します。構文: resource imagecreatetruecolor ( int $width , int $height )
コードは次のとおりです:
3番目のステップは、空白の画像領域に塗りつぶされた背景を描画することです
カラーフィラーが必要です。imagecolorallocate -- 画像に色を割り当てます。構文: int imagecolorallocate ( resource $image , int $red , int $blue )
コードは次のとおりです:
この青色を背景に塗りつぶします。 imagefill -- 領域の塗りつぶし 構文: bool imagefill ( resource $image , int $x , int $color )
コードは次のとおりです:
4番目のステップは、青色の背景に線やテキストなどを入力することです
カラーフィラー
コードは次のとおりです:
2つの線分を描画します: imageline
imageline() は、イメージ画像上に座標 x1,y1 から x2,y2 (画像の左上隅が 0,0) までの線分をカラー color を使用して描画します。構文: bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
コードは次のとおりです:
文字列を水平方向に描画します: imagestring
imagestring() は、col color を使用して、文字列 s を image で表される画像の x、y 座標に描画します (これは文字列の左上隅の座標であり、画像全体の左上隅は 0 です)。 0)。フォントが 1、2、3、4、または 5 の場合は、内蔵フォントが使用されます。構文: bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )
コードは次のとおりです:
ステップ 5、最終グラフィックを出力します
imagepng() GD イメージ ストリーム (画像) を PNG 形式で標準出力 (通常はブラウザ) に出力するか、ファイル名が指定されている場合はファイルに出力します。構文: bool imagepng ( resource $image [, string $filename ] )
コードは次のとおりです:
ステップ 6、すべてのリソースをクリアしたいです
imagedestroy() は画像に関連付けられたメモリを解放します。構文: bool imagedestroy ( resource $image )
コードは次のとおりです:
他のページで作成したグラフィックを呼び出します(html)
コードは次のとおりです:
サンプルコードは次のとおりです:
コードは次のとおりです:
表示効果:
2. 動的検証コードを作成する
添付: コードソースアドレス https://github.com/cnblogs-/php-captcha
1. 確認コードを含む写真を作成し、背景をぼかします
ランダム コードは 16 進数を使用します。ぼかした背景とは、画像の背景に線や雪の結晶などを追加することを意味します。
1) ランダムコードを作成します
コードは次のとおりです:
for ($i=0;$i<$_rnd_code;$i++) {2) セッションに保存
コードは次のとおりです:
$_SESSION['コード'] = $_nms
3)画像を作成します
コードは次のとおりです:
//画像を作成します
$_img = imagecreatetruecolor($_width,$_height);4) 背景をぼかす
コードは次のとおりです:
//ランダムに6本の線を描きます5) 出力と破壊
コードは次のとおりです:
//検証コードを出力しますこれを global.func.php グローバル関数ライブラリにカプセル化し、呼び出しやすいように関数名を _code() にします。関数の柔軟性を高めるために、4 つのパラメーター $_width、$_height、$_rnd_code、$_flag を設定します。
* @param int $_width 検証コードの長さ: 6 桁が必要な場合は 75+50 が推奨され、8 桁が必要な場合は 75+50+50 が推奨されます。 * @param int $_height 認証コードの高さ
* @param int $_rnd_code 認証コードの桁数
* @param bool $_flag 検証コードに境界線が必要かどうか: 境界線がある場合は true、境界線がない場合は false (デフォルト)
カプセル化されたコードは次のとおりです:
コードは次のとおりです:
2.创建验证机制
创建php验证页面,通过session来检验验证码是否一致。
1)创建verification-code.php验证页面
代码如下:
显示如下:
2)创建产生验证码图片页面
创建codeimg.php为verification-code.php html代码里的img提供验证码图片
首先必须在codeimg.php页面开启session;
其次,将我们封装好的global.func.php全局函数库引入进来;
最后,运行_code();
代码如下:
3)创建session检验机制
首先必须在verification-code.php页面也开启session;
其次,设计提交验证码的方式,本文以get方式提交,当action=verification时提交成功;
最后,创建验证函数,原理是将客户端用户提交的验证码同服务器codeimg.php中session的验证码是否一致;这里有一个js弹窗函数_alert_back(),我们也把它封装在global.func.php里;
修改verification-code.php中php代码如下:
代码如下:
3. 認証コードの画像をクリックして認証コードを更新します
上記の確認コードを更新したい場合は、確認コードの画像をクリックして確認コードを更新する codeimg.js 関数を作成してページを更新する必要があります。
コードは次のとおりです:
次に、それをverification-code.phpのHTMLコードヘッドに<リンク>します。
http://www.bkjia.com/PHPjc/957540.html