인증 코드는 웹 애플리케이션에서 매우 중요하며 일반적으로 악성 등록 및 로그인, 악성 포럼 스팸 등 사용자가 악의적으로 양식을 제출하는 것을 방지하는 데 사용됩니다. 이 기사에서는 PHP를 사용하여 숫자 인증 코드, 숫자 + 문자 인증 코드, 중국어 인증 코드, 산술 인증 코드 등 다양한 일반 인증 코드를 생성하는 방법과 Ajax 인증 프로세스를 설명합니다.
PHP는 인증코드 이미지를 생성합니다
PHP가 인증코드를 생성하는 원리: PHP의 GD 라이브러리를 사용하여 인증코드가 포함된 그림을 생성하고 인증코드를 세션에 저장합니다. PHP로 확인 코드를 생성하는 일반적인 과정은 다음과 같습니다.
2. 그림의 배경색을 설정합니다.
4. - 숫자 난수 확인 코드
5. 생성된 각 문자의 회전 각도와 위치를 조정하고 png 이미지에 그립니다.
6. 등록 기계가 원본 이미지를 악의적으로 분석하는 것을 방지합니다.
7. 사진을 출력합니다.
8.
관련 권장사항: "
php 시작하기 튜토리얼"
session_start(); getCode(4,60,20); function getCode($num,$w,$h) { $code = ""; for ($i = 0; $i < $num; $i++) { $code .= rand(0, 9); } //4位验证码也可以用rand(1000,9999)直接生成 //将生成的验证码写入session,备验证时用 $_SESSION["helloweba_num"] = $code; //创建图片,定义颜色值 header("Content-type: image/PNG"); $im = imagecreate($w, $h); $black = imagecolorallocate($im, 0, 0, 0); $gray = imagecolorallocate($im, 200, 200, 200); $bgcolor = imagecolorallocate($im, 255, 255, 255); //填充背景 imagefill($im, 0, 0, $gray); //画边框 imagerectangle($im, 0, 0, $w-1, $h-1, $black); //随机绘制两条虚线,起干扰作用 $style = array ($black,$black,$black,$black,$black, $gray,$gray,$gray,$gray,$gray ); imagesetstyle($im, $style); $y1 = rand(0, $h); $y2 = rand(0, $h); $y3 = rand(0, $h); $y4 = rand(0, $h); imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED); imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED); //在画布上随机生成大量黑点,起干扰作用; for ($i = 0; $i < 80; $i++) { imagesetpixel($im, rand(0, $w), rand(0, $h), $black); } //将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成 $strx = rand(3, 8); for ($i = 0; $i < $num; $i++) { $strpos = rand(1, 6); imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black); $strx += rand(8, 12); } imagepng($im);//输出图片 imagedestroy($im);//释放图片所占内存 }
코드의 사용자 정의 함수 getCode()는 인증 코드 생성 프로세스를 설명합니다. PHP GD 라이브러리에 포함된 이미지 처리 기능을 사용하면 원하는 다양한 그림 효과를 쉽게 생성할 수 있습니다.
·imagecreate(): 새 이미지 만들기
·imagecolorallocate(): 이미지에 색상 지정
·imagefill(): 이미지 채우기
·imageRectangle(): 그리기 직사각형( 테두리)
·imagesetstyle(): 선 그리기 스타일 설정
·imageline(): 선분 그리기
·imagesetpixel(): 픽셀 그리기
·imagepng( ): Draw PNG 형식으로 이미지를 브라우저나 파일로 출력
·imagedestroy(): 이미지가 차지한 메모리 해제
쉽게 호출할 수 있도록 위 코드를 code_num.php로 저장하세요.
Ajax 새로 고침 및 검증인증 코드가 생성된 후 실제 프로젝트에 적용해야 합니다. 보통 우리는 인증 코드를 클릭하면 ajax를 사용하여 새로 고침하고 새로운 인증 코드를 생성합니다. 육안으로 식별하기 어렵다) ), 즉 "명확히 보이지 않아 다른 것으로 바꿀 수 없다"는 뜻이다. 인증 코드를 입력한 후에는 인증 코드가 올바른지 확인해야 합니다. 인증 프로세스는 백그라운드 프로그램에 의해 완료되지만 Ajax를 통해 새로 고침 없는 인증을 달성할 수도 있습니다. 프런트 엔드 페이지 index.html을 생성하고 jQuery를 로드한 후 본문에 확인 코드 양식 요소를 추가합니다.
<p>验证码:<input type="text" class="input" id="code_num" name="code_num" maxlength="4" /> <img src="code_num.php" id="getcode_num" title="看不清,点击换一张" align="absmiddle" alt="PHP에서 무작위로 인증 코드를 생성하는 방법" ></p> <p><input type="button" class="btn" id="chk_num" value="提交" /></p>
html 코드에서
$(function(){ //数字验证 $("#getcode_num").click(function(){ $(this).attr("src",'code_num.php?' + Math.random()); }); ... });
인증코드를 새로고침한다는 것은 실제로 인증코드 생성 프로그램을 다시 요청한다는 뜻입니다. 여기서 주의할 점은 code_num.php 호출 시 임의의 매개변수가 있다는 점입니다. 캐싱을 방지하기 위해 가져와야 합니다. 다음으로 인증코드를 입력한 후 "Submit" 버튼을 클릭하면 $.post()를 통해 프론트엔드에서 백그라운드 chk_code.php로 ajax 요청을 보냅니다.
$(function(){ ... $("#chk_num").click(function(){ var code_num = $("#code_num").val(); $.post("chk_code.php?act=num",{code:code_num},function(msg){ if(msg==1){ alert("验证码正确!"); }else{ alert("验证码错误!"); } }); }); });
백엔드 chk_code.php 검증:
session_start(); $code = trim($_POST['code']); if($code==$_SESSION["helloweba_num"]){ echo '1'; }
백그라운드에서는 제출된 인증코드와 세션에 저장된 인증코드를 비교하여 검증을 완료합니다.
다른 인증의 생성 및 사용에 대해서도 원칙은 동일합니다. 개발자는 필요에 따라 다양한 스타일의 임의 인증 코드를 생성할 수 있습니다. 이 기사의 데모에서는 숫자 인증 코드, 숫자 + 문자 인증 코드 및 중국어 인증 코드를 제공합니다. , Google 인증코드 모방, 산술 인증코드 등
위 내용은 PHP에서 무작위로 인증 코드를 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!