인증코드가 형태로 구현되는 경우가 많아지는데, js로 작성된 인증코드는 늘 불편함을 느껴서 php로 구현되는 인증코드를 배웠습니다. 뭐 사실 딱히 할 일도 없었지만 시간낭비하기 싫어서 PHP로 인증코드를 구현하는 방법을 배웠습니다. 속담처럼, 기술이 너무 많다고 해서 부담이 되는 것은 아닙니다. 게다가 함수로 캡슐화할 수도 있는데, 이는 향후 사용에 매우 편리합니다. 물론 지금은 캡슐화되지 않습니다.
우선 렌더링은 다음과 같습니다.
기계의 악성 등록을 방지하기 위해 등록할 때 등록 코드가 자주 사용되므로 여기에 게시하겠습니다. 매우 간단하지만 아이디어가 매우 명확한 png 이미지 확인 코드를 생성하기 위한 기본 이미지:
1. png 이미지 생성
2. 이미지의 배경색 설정
3. . 글꼴 색상 및 스타일 설정
4. 4자리 랜덤 인증코드 생성
5. 생성된 각 문자의 회전 각도와 위치를 조정하고 png 이미지에 그립니다
6. 노이즈 및 간섭선 방지를 위한 기계분석 원본 사진은 악의적으로 등록
7. 사진 출력
8. 사진이 차지한 메모리 해제
authcode.php 파일
<?php session_start (); header ( 'Content-type: image/png' ); //创建图片 $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 = 'rock.ttf'; //字体样式,这个可以从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['authcode'] = $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 인증코드 생성의 원리와 구현에 대해 다양한 측면을 포함하여 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.