PHP 사용자 등록 및 로그인 시스템을 위한 인증코드 제작
인증코드 분석
로그인 및 등록 페이지에 인증코드를 설정하는 것은 주로 무차별 대입 크래킹, 악성 등록 등을 방지하기 위한 것이며 오늘날 웹사이트의 표준 콘텐츠로 개발되었습니다. 직접 인증번호로 사용자의 휴대폰이나 이메일로 전송하여 인증합니다. 이 섹션에서는 가장 간단한 사진 인증코드만 인증합니다. 이 섹션을 사용하면 인증코드 인증의 원리를 이해할 수 있습니다. 인증 코드 생성을 위한 간단한 흐름도

인증 코드 배경 이미지 생성
1. php의 GD 확장을 활성화합니다
php.ini 파일을 열고 확장명=php_gd2.dll의 주석을 해제하고 활성화합니다. 원래 활성화되어 있으면 변경할 필요가 없습니다.
다음으로 60X15 흰색 배경 이미지
2. 리소스 데이터의 일종인 캔버스

를 만듭니다. 조작할 수 있는 이미지 리소스입니다.
새 캔버스 만들기(New)
ImageCreate(너비, 높이), 팔레트 기반 캔버스를 만듭니다.
- imageCreateTrueColor(width, height); 트루 컬러 캔버스를 만듭니다.
- imageCreateFromPNG(이미지 주소);
imageCreateFromGIF(이미지 주소);
트루 컬러 캔버스를 만듭니다.
$height=15;
//캔버스 만들기$img=imageCreateTrueColor($width,$height);
$img를 보려면 var_dump()를 사용해 보세요. 출력 리소스 유형과 유사합니까? 3. 캔버스 조작
색상 지정: 캔버스에 특정 색상을 사용해야 하는 경우 먼저 캔버스에 색상을 지정해야 합니다.
//색상 할당 $white = imageColorAllocate($img,0xff,0xff,0xff);
캔버스 채우기
: 채우기 점, 연속 점을 동일한 색상으로 채우기(교체)
기능 사용:
imageFill(캔버스, 채우기 위치 x, 채우기 위치 Y, 색상 식별)을 사용하여 완료 위치는 좌표를 사용하여 관리됩니다. 원점: 0, 0, 캔버스 왼쪽 상단. 오른쪽으로 갈수록 x축이 증가하고, 아래로 갈수록 Y축이 증가합니다. //캔버스에 색상 채우기 4. 캔버스에 출력 캔버스가 나옵니다. 일반: 이미지 파일로 출력합니다. 직접 출력. 사용 기능: imagePNG(canvas[, 파일 주소])://지정된 주소에 파일 생성 imageJPEG();//웹 페이지에 직접 출력, 당사 인증 코드는 이 방법을 사용합니다 imageGIF();//이전과 동일 두 번째 매개변수가 없으면 직접 출력을 의미합니다. 브라우저에 직접 출력하려면 응답 데이터 유형이 PNG 형식 이미지여야 함을 브라우저에 알려야 합니다. Content-type //직접 출력 header('Content -Type:image /jpeg;'); imageJPEG($img); 참고: 캔버스는 다양한 형식으로 여러 번 출력할 수 있습니다! 5. 캔버스 리소스 삭제 함수 사용: imageDestroy(); imageDestroy($img); 인증 코드 값 생성 1. 먼저 가능한 모든 문자를 정의하고 모든 문자의 총 길이와 생성하려는 인증 코드의 길이를 얻어야 합니다. 코드는 다음과 같습니다. $chars = '1234567890' ;//나타날 수 있는 문자 $code_len=4;//인증코드 길이$code='';//초기화 인증 코드 문자열 for($i= 1;$i<=$code_len ;++$i){ $rand=mt_rand(0,$chars_len-1);//0~9 중에서 무작위로 숫자 선택 } //인증을 위해 세션에 저장------ -- ---------------session_start(); 1. 인증코드 값에 임의의 색상을 지정합니다 //문자열 색상을 임의로 지정합니다$str_color=imageColorAllocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand (0,255)) ; //문자열의 중심 계산 3. 인증코드 출력 / /직접 출력 전체 코드는 다음과 같습니다
imageFill($img,0,0,$white);
2 4번, 매번 가능한 모든 문자에서 숫자를 추출하고 마지막으로 네 자리를 연결하여 인증 코드 값을 생성합니다
3. 세션을 열고 인증코드 값을 세션에 저장하여 인증
2. 인증코드 값을 중앙에 두고 배경 이미지에 적어주세요
//문자열 크기
$font=5;
//캔버스 크기
$img_w=imageSX($img);
$img_h=imageSY($img);
//Font
$font_w=imagefontwidth($font);
$font_h=imagefontheight($font);
//문자열의 크기
$code_w=$font_w*$code_len;
$code_h=$font_h;
$x = ($img_w-$code_w)/2;
$y=($img_h-$code_h)/2;
//캔버스에 인증코드 출력--------------- - ------------
imageString($img,$font,$x,$y,$code,$str_color);
imageJPEG($img);
imageDestroy($img);<?php
//生成验证码背景图---------------------------------
header('Content-Type:image/jpeg;');
//背景图尺寸
$width=60;
$height=15;
//创建画布
$img=imageCreateTrueColor($width,$height);
//分配颜色
$white = imageColorAllocate($img,0xff,0xff,0xff);
//填充颜色到画布
imageFill($img,0,0,$white);
//生成验证码的值----------------------------------
$chars = '1234567890';//所以可能出现的字符
$chars_len=strlen($chars);
$code_len=4;//验证码的长度
$code='';//初始化验证码字符串
for($i=1;$i<=$code_len;++$i){
$rand=mt_rand(0,$chars_len-1);//随机取0-9中的任意一个数字
$code.=$rand;//将取出来的数字连接在一起
}
//存入session中,用于验证-------------------------
session_start();
$_SESSION['ver_code']=$code;
//随机分配字符串颜色------------------------------
$str_color=imageColorAllocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
//计算字符串的居中
//字符串大小
$font=5;
//画布尺寸
$img_w=imageSX($img);
$img_h=imageSY($img);
//字体的尺寸
$font_w=imagefontwidth($font);
$font_h=imagefontheight($font);
//字符串的尺寸
$code_w=$font_w*$code_len;
$code_h=$font_h;
$x=($img_w-$code_w)/2;
$y=($img_h-$code_h)/2;
//把验证码输出到画布上----------------------------
imageString($img,$font,$x,$y,$code,$str_color);
//直接输出
imageJPEG($img);
imageDestroy($img);
?>
- 코스 추천
- 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~ 















