>백엔드 개발 >PHP 튜토리얼 >PHP 인증 코드를 만드는 방법

PHP 인증 코드를 만드는 방법

墨辰丷
墨辰丷원래의
2018-06-05 13:42:471493검색

이 글은 주로 PHP 인증코드를 만드는 방법을 소개합니다. 관심있는 친구들이 참고하시면 좋을 것 같습니다.

인증코드는 폼으로 구현되는 경우가 많아지는데, js로 작성한 인증코드는 늘 불편한 느낌이 들어서 php로 구현하는 인증코드를 배웠습니다. 뭐 사실 딱히 할 일도 없었지만 시간낭비하기 싫어서 PHP로 인증코드를 구현하는 방법을 배웠습니다. 속담처럼, 기술이 너무 많다고 해서 부담이 되는 것은 아닙니다. 게다가 함수로 캡슐화할 수도 있는데, 이는 향후 사용에 매우 편리합니다. 물론 지금은 캡슐화되지 않습니다.

먼저 렌더링은 다음과 같습니다.

1. png 그림을 생성합니다

2. 그림의 배경색을 설정합니다.
3. 글꼴 색상과 스타일을 설정합니다.
4. 인증 코드
5. 생성된 각 문자의 회전 각도와 위치를 조정하고 png 이미지에 그립니다.
6. 등록 기계가 원본 이미지를 분석하여 악성 등록을 방지하도록 노이즈 및 간섭선을 추가합니다
7. 8. 이미지 해제 메모리 점유

authcode.php 파일

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); 
?>

Summary: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되길 바랍니다.

관련 권장 사항:

php에서 간단한 확률을 구현하는 방법

php에서 while 루프 제어의 방법 및 간단한 예

PHP
에서 도메인 간 작업을 구현하는 방법

위 내용은 PHP 인증 코드를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.