PHP検証コードの作り方

墨辰丷
墨辰丷オリジナル
2018-06-05 13:42:471498ブラウズ

この記事では主にPHP認証コードの作成方法を紹介しますので、興味のある方はぜひ参考にしてください。

フォームに検証コードが実装されることが増えてきましたが、jsで書かれた検証コードはいつも不便に感じたので、phpで実装された検証コードを学びました。そうですね、実際には何もすることがなかったのですが、時間を無駄にしたくなかったので、PHP で検証コードを実装する方法を学びました。ことわざにあるように、スキルが多すぎても負担にはなりません。さらに、関数にカプセル化することもできます。これは将来の使用に非常に便利です。もちろん、現在はカプセル化されていません。

まず、レンダリングします:

1. PNG 画像を生成します

2. 画像の背景色を設定します

3. 4 桁の数字をランダムに生成します。検証コード
5. 生成された各文字の回転角度と位置を調整し、PNG 画像上に描画します
6. 登録マシンが元の画像を解析して悪意のある登録を行わないようにする
7. 画像を出力します。 8. 画像を解放します 占有メモリ


authcode.php file

code

<?php
session_start ();
header ( &#39;Content-type: image/png&#39; );
//创建图片
$im = imagecreate($x=130,$y=45 );
$bg = imagecolorallocate($im,rand(50,200),rand(0,155),rand(0,155)); //第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色
$fontColor = imageColorAllocate ( $im, 255, 255, 255 ); //字体颜色
$fontstyle = &#39;rock.ttf&#39;; //字体样式,这个可以从c:\windows\Fonts\文件夹下找到,我把它放到和authcode.php文件同一个目录,这里可以替换其他的字体样式
//产生随机字符
for($i = 0; $i < 4; $i ++) {
$randAsciiNumArray = array (rand(48,57),rand(65,90));
$randAsciiNum = $randAsciiNumArray [rand ( 0, 1 )];
$randStr = chr ( $randAsciiNum );
imagettftext($im,30,rand(0,20)-rand(0,25),5+$i*30,rand(30,35),$fontColor,$fontstyle,$randStr);
$authcode .= $randStr; 
}
$_SESSION[&#39;authcode&#39;] = $randFourStr;//用户和用户输入的验证码做比较
//干扰线
for ($i=0;$i<8;$i++){
$lineColor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imageline ($im,rand(0,$x),0,rand(0,$x),$y,$lineColor);
}
//干扰点
for ($i=0;$i<250;$i++){
imagesetpixel($im,rand(0,$x),rand(0,$y),$fontColor);
}
imagepng($im);
imagedestroy($im); 
?>

概要

: 以上がこの記事の全内容です、皆様の学習に少しでもお役に立てれば幸いです。

関連する推奨事項:

phpで単純な確率を実装する方法


phpでのwhileループ制御の方法と簡単な例


PHP でクロスドメイン操作を実装する方法

以上がPHP検証コードの作り方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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