웹사이트 등록, 로그인 또는 메시지 페이지에는 모두 웹사이트가 기계에 의해 악의적으로 등록되는 것을 방지하기 위해 현재 운영자의 적법성을 확인하기 위한 등록 코드가 필요합니다.
인증 코드 생성은 몇 단계만 거치면 됩니다. 먼저 임의의 문자열을 얻은 다음 캔버스에 생성된 문자열을 작성하고 이제 캔버스에 선과 눈송이를 그릴 수도 있습니다. 인증코드를 생성하는 코드입니다.
관련 권장사항: "PHP 시작하기 튜토리얼"
소스 코드:
<?php session_start(); //开启session //创建随机码,并保存在session中 for($i=0;$i<4;$i++) { $_nmsg.=dechex(mt_rand(0,15)); } //保存到session中 $_SESSION['code']=$_nmsg; //设置图片长和高 $_width=75; $_height=25; //创建一张图像 $_img=imagecreatetruecolor($_width,$_height); //白色背景 $_white=imagecolorallocate($_img,255,255,255); //填充到背景上 imagefill($_img,0,0,$_white); //黑色边框 $_black=imagecolorallocate($_img,0,0,0); imagerectangle($_img,0,0,$_width-1,$_height-1,$_black); //随即画出5个线条 for($i=0;$i<5;$i++) { $_rnd_color=imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height),$_rnd_color); } //雪花 for($i=0;$i<10;$i++) { $_rnd_color=imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)); imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),"*",$_rnd_color); } //输出验证码 for($i=0;$i<strlen($_SESSION['code']);$i++) { imagestring($_img,5,10+$i*15,mt_rand(0,10),$_SESSION['code'][$i],$_blackr); } //输出图像 header('Content-Type:image/png'); imagepng($_img); //销毁图像 imagedestroy($_img); ?>
다음 함수가 코드에서 사용됩니다:
mt_rand — 더 나은 난수 생성
int mt_rand ([ int $min ], int $max ) 많은 오래된 libc 난수 생성기에는 불확실하고 알려지지 않은 특성이 있으며 매우 느립니다. PHP의 rand() 함수는 기본적으로 libc 난수 생성기를 사용합니다. 이를 대체하기 위해
mt_rand() 함수가 비공식적으로 사용됩니다. 이 함수는 Mersenne Twister의 알려진 기능을 난수 생성기로 사용하는데, 이는 libc에서 제공하는 rand()보다 평균 4배 빠른 속도로 난수를 생성할 수 있습니다.
dechex — 10진수를 16진수로 변환하고 주어진 숫자 매개변수의 16진수 표현이 포함된 문자열을 반환합니다. 변환할 수 있는 최대 값은 10진수로 4294967295이며 결과는 "ffffffff"입니다.
imagecreatetruecolor — 새로운 트루 컬러 이미지를 만듭니다.
resource imagecreatetruecolor ( int $x_size , int $y_size )
imagecreatetruecolor() x_size 및 y_size 크기의 검은색 이미지를 나타내는 이미지 식별자를 반환합니다.
imagecolorallocate — 이미지에 색상을 할당합니다.
int imagecolorallocate (resource $image, int $red, int $green, int $blue)
imagecolorallocate() 주어진 RGB 구성 요소로 구성된 색상을 나타내는 식별자를 반환합니다. 빨간색, 녹색, 파란색은 각각 원하는 색상의 빨간색, 녹색, 파란색 구성 요소입니다. 이러한 매개변수는 0~255의 정수 또는 16진수 0x00~0xFF입니다. image로 표현되는 이미지에 사용되는 각 색상을 생성하려면 imagecolorallocate()를 호출해야 합니다.
imagefill — 영역 채우기.
bool imagefill (resource $image , int $x , int $y , int $color )
imagefill()은 이미지 이미지의 x, y 좌표(이미지의 왼쪽 상단)에 색상 색상으로 영역 채우기를 수행합니다. 는 0, 0) (즉, x, y 포인트와 동일한 색상의 포인트와 인접한 포인트가 채워집니다).
imageRectangle — 직사각형을 그립니다.
bool imageRectangle (resource $image, int $x1, int $y1, int $x2, int $y2, int $col)
imageRectangle()은 col 색상을 사용하여 이미지에 직사각형을 그리고 왼쪽 상단을 그립니다. 모서리 좌표는 x1, y1이고 오른쪽 하단 모서리의 좌표는 x2, y2입니다. 이미지의 왼쪽 상단 모서리에는 0, 0 좌표가 있습니다.
imageline — 선분을 그립니다.
bool imageline(resource $image, int $x1, int $y1, int $x2, int $y2, int $color)
imageline()은 x1, y1 좌표에서 x2, y2까지 이미지의 색상 색상을 사용합니다( 이미지의 왼쪽 상단이 0, 0입니다) 선분을 그립니다.
imagestring — 문자열을 가로로 그립니다.
bool imagestring (resource $image, int $font, int $x, int $y, string $s, int $col)
imagestring()은 col color를 사용하여 image가 표현하는 이미지의 x에 문자열 s를 그립니다. y 좌표(문자열의 왼쪽 위 모서리의 좌표이며, 전체 이미지의 왼쪽 위 모서리는 0, 0입니다). 글꼴이 1, 2, 3, 4, 5이면 내장 글꼴이 사용됩니다.
imagepng — 브라우저나 파일에 PNG 형식의 이미지를 출력합니다.
imagepng() PNG 형식의 GD 이미지 스트림(이미지)을 표준 출력(일반적으로 브라우저)으로 출력하거나 파일 이름이 filename과 함께 제공되는 경우 그런 다음 이 파일로 출력해 보세요.
imagedestroy — 이미지를 삭제합니다.
imagedestroy()는 이미지와 관련된 메모리를 해제합니다.
소스코드를 code.php로 저장하면 php파일인데 어떻게 사용하나요?
imagepng는 이 PHP 파일을 png 파일로 내보냈습니다
직접 호출하세요.
<img src="mycode.php"/>
인증 코드를 사용하려면 세션을 열어야 한다는 점을 기억하세요.
아아아아위 내용은 PHP에서 인증 코드를 디자인하는 과정은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!