본 글은 주로 PHP에서 이미지 인증코드를 생성하는 방법을 소개하고, 덧셈 연산 인증코드와 문자 인증코드 두 가지 방법을 예시 형태로 분석하여 참고가 가능합니다.
1. 추가 작업 확인 코드 그림
session_start (); /*定义头文件为图片*/ header("Content-type: image/png"); /*生成验证码*/ /*创建图片设置字体颜色*/ $im = imagecreate($w, $h); $red = imagecolorallocate($im, 255, 255, 255); $white = imagecolorallocate($im, 255, 255, 255); /*随机生成两个数字*/ $num1 = rand(1, 20); $num2 = rand(1, 20); $_SESSION ["administratorConfirmCode"] = $num1+$num2; /*设置图片背景颜色*/ $gray = imagecolorallocate($im, 118, 151, 199); $black = imagecolorallocate($im, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100)); /*创建图片背景*/ imagefilledrectangle($im, 0, 0, 100, 24, $black); /*在画布上随机生成大量点*/ for ($i = 0; $i < 80; $i++) { imagesetpixel($im, rand(0, $w), rand(0, $h), $gray); } /*将计算验证码写入到图片中*/ imagestring($im, 5, 5, 4, $num1, $red); imagestring($im, 5, 30, 3, "+", $red); imagestring($im, 5, 45, 4, $num2, $red); imagestring($im, 5, 70, 3, "=", $red); imagestring($im, 5, 80, 2, "?", $white); /*输出图片*/ imagepng($im); imagedestroy($im);
2. 문자 확인 코드 그림 생성 [글꼴이 있는 곳에는 실제 글꼴 경로를 입력해야 합니다. 그렇지 않으면 이미지에 확인 코드가 표시되지 않을 수 있습니다. ]
session_start (); /*设置文件头为图片输出*/ Header("Content-type: image/JPEG"); /*调用生成验证码函数*/ $str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234565789"; $result=""; for($i=0;$i<$length;$i++){ $num[$i]=rand(0,61); $result.=$str[$num[$i]]; } $text = $result; $_SESSION ["administratorConfirmCode"] = $text; /*设置图片的宽度和高度*/ $im_x = $w; $im_y = $y; /*创建图片*/ $im = imagecreatetruecolor($im_x,$im_y); $text_c = ImageColorAllocate($im, mt_rand(0,100),mt_rand(0,100),mt_rand(0,100)); $tmpC0=mt_rand(100,255); $tmpC1=mt_rand(100,255); $tmpC2=mt_rand(100,255); $buttum_c = ImageColorAllocate($im,$tmpC0,$tmpC1,$tmpC2); imagefill($im, 16, 13, $buttum_c); /*字体文件*/ $font = _WEB_DIR_.'/font/comic.ttf'; for ($i=0;$i<strlen($text);$i++){ $tmp =substr($text,$i,1); $array = array(-1,1); $p = array_rand($array); $an = $array[$p]*mt_rand(1,10);//角度 $size = 28; imagettftext($im, $size, $an, 15+$i*$size, 35, $text_c, $font, $tmp); } /*将字符写入文件中*/ $distortion_im = imagecreatetruecolor ($im_x, $im_y); imagefill($distortion_im, 16, 13, $buttum_c); for ( $i=0; $i<$im_x; $i++) { for ( $j=0; $j<$im_y; $j++) { $rgb = imagecolorat($im, $i , $j); if( (int)($i+20+sin($j/$im_y*2*M_PI)*10) <= imagesx($distortion_im)&& (int)($i+20+sin($j/$im_y*2*M_PI)*10) >=0 ) { imagesetpixel ($distortion_im, (int)($i+10+sin($j/$im_y*2*M_PI-M_PI*0.1)*4) , $j , $rgb); } } } /*干扰元素点的数量*/ $count = 160; /*创建干扰元素点*/ for($i=0; $i<$count; $i++){ $randcolor = ImageColorallocate($distortion_im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imagesetpixel($distortion_im, mt_rand()%$im_x , mt_rand()%$im_y , $randcolor); } /*创建干扰线条*/ $rand = mt_rand(5,30); $rand1 = mt_rand(15,25); $rand2 = mt_rand(5,10); for ($yy=$rand; $yy<=+$rand+2; $yy++){ for ($px=-80;$px<=80;$px=$px+0.1){ $x=$px/$rand1; if ($x!=0){ $y=sin($x); } $py=$y*$rand2; imagesetpixel($distortion_im, $px+80, $py+$yy, $text_c); } } /*以PNG格式将图像输出到浏览器*/ ImagePNG($distortion_im); /*销毁图像*/ ImageDestroy($distortion_im); ImageDestroy($im);
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되길 바랍니다.
관련 권장사항:
파일 업로드 백엔드 처리를 구현하기 위한 PHP 실용적인 팁 및 방법
PHP 메소드에서 비어 있거나 특정 값 요소를 제거하는 방법 배열
위 내용은 PHP에서 이미지 인증 코드를 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!