ホームページ > バックエンド開発 > PHPチュートリアル > PHP 5での画像検証コードの生成

PHP 5での画像検証コードの生成

巴扎黑
リリース: 2023-03-03 11:58:01
オリジナル
1106 人が閲覧しました

1. 適用シナリオ

WEB ウェブサイトでは、悪意のあるユーザーの登録や投稿などを防ぐために画像認証コードがよく使用されます。 PHP では、画像検証コードは主に GD ライブラリが提供する API を通じて完成します。

2. 実装方法

認証コードは一般に乱数と文字の組み合わせであり、ランダム関数と16進関数dechexを使用することで簡単に実装できます。最も重要な問題は、画像をどのように生成するかです。

<?php
//生成随机数-》创建图片-》随机数写进图片 -》输出到浏览器
for($i=0;$i<4;$i++) {
  $rand .= dechex(rand(1,15));
}
  
$im = imagecreatetruecolor(100,30);// 新建一个真彩色图像  x就是宽 ,y就是高
//设置颜色
// 为一幅图像分配颜色(相当于 PhotoShop 的调色板)
// imagecolorallocate ( resource image, int red, int green, int blue )  返回一个标识符,代表了由给定的 RGB 成分组成的颜色。
$bg = imagecolorallocate($im,0,0,0);//第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色。代表了由给定的 RGB 成分组成的颜色
  
$te = imagecolorallocate($im,225,225,225);
//把字符串写在图像左上角
//绘图函数  imagestring ( resource image, font, int x, int y, string s, int col ) 
//用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。  
imagestring($im,5,rand(3,70),rand(0,16),$rand,$te);
//直接输出图像到浏览器
header("Content-type: image/jpeg");
// imagejpeg ( resource image [, string filename [, int quality]] )  filename 参数为可选,如果省略,则原始图像流将被直接输出。要省略 filename 参数而提供 quality 参数,使用空字符串(&#39;&#39;)。通过 header() 发送 Content-type: image/jpeg 可以使 PHP 脚本直接输出 JPEG 图像。
imagejpeg($im);
?>
ログイン後にコピー

3. 複雑な画像検証コードを作成する

場合によっては、画像認識ツールによって認識されないようにするために、検証コードに何らかの干渉を設定する必要があります。たとえば、画像に線や点をランダムに追加します。これは主に、imageline() 関数と imagesetpixel() 関数によって実現されます。中国語の認証コードも作成します。

りー


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート