PHP에서 다양한 무작위 인증코드를 생성하는 방법 요약

怪我咯
풀어 주다: 2023-03-10 14:36:01
원래의
3161명이 탐색했습니다.

이 글에서는 주로 PHP에서 다양한 무작위 인증코드를 생성하는 방법을 소개합니다. 또한 구체적인 예를 바탕으로 PHP에서 인증코드를 생성하는 일반적인 기술을 요약하고 분석합니다. 또한 독자들이 다운로드하여 참조할 수 있습니다. 필요하신 분은 참고하세요

본 글의 예시는 PHP에서 다양한 무작위 인증코드를 생성하는 방법을 요약한 것입니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

인증 코드는 웹 애플리케이션에서 매우 중요합니다. 이는 일반적으로 사용자가 악성 등록 및 로그인, 악성 포럼 스팸 등 악의적으로 양식을 제출하는 것을 방지하는 데 사용됩니다. 이 기사에서는 PHP를 사용하여 숫자 인증 코드, 숫자 + 문자 인증 코드, 중국어 인증 코드, 산술 인증 코드 등 다양한 일반 인증 코드를 생성하는 방법과 Ajax 인증 프로세스를 설명합니다.

이 웹사이트에서 샘플 소스 코드를 다운로드하려면 여기를 클릭하세요.

PHP는 인증코드 이미지를 생성합니다

PHP가 인증코드를 생성하는 원리: PHP의 GD 라이브러리를 사용하여 인증코드가 포함된 그림을 생성하고 인증코드를 세션에 저장합니다. PHP로 확인 코드를 생성하는 일반적인 과정은 다음과 같습니다.

2. 그림의 배경색을 설정합니다.

4. - 숫자 난수 확인 코드

5. 생성된 각 문자의 회전 각도와 위치를 조정하고 png 이미지에 그립니다.

6. 등록 기계가 원본 이미지를 악의적으로 분석하는 것을 방지합니다.

7. 사진을 출력합니다.

8.

샘플 코드:

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(): 이미지에 색상 지정 getCode()诠释了验证码的生成过程。运用PHP GD库自带的图像处理函数,能轻松生成各种想要的图片效果。

imagecreate():创建一个新图像

imagecolorallocate():为图像分配颜色

imagefill():填充图像

imagerectangle():画一个矩形(边框)

imagesetstyle():设置画线风格

imageline():画一条线段

imagesetpixel():画点像素

imagepng():以PNG格式将图像输出到浏览器或文件

imagedestroy()

imagefill(): 채우기 이미지

imageRectangle(): 직사각형(테두리) 그리기

imagesetstyle(): 선 그리기 스타일 설정 imageline()</code >: 선 그리기 선분 </span></p><code>imagesetpixel(): 픽셀 그리기

imagepng(): 이미지를 PNG 형식으로 브라우저나 파일에 출력

imagedestroy()< /code>: 이미지가 차지한 메모리를 해제합니다


쉽게 호출할 수 있도록 위 코드를 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"></p>
<p><input type="button" class="btn" id="chk_num" value="提交" /></p>
로그인 후 복사


html 코드에서

$(function(){
  //数字验证
  $("#getcode_num").click(function(){
    $(this).attr("src",&#39;code_num.php?&#39; + 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[&#39;code&#39;]);
if($code==$_SESSION["helloweba_num"]){
  echo &#39;1&#39;;
}
로그인 후 복사
🎜🎜🎜🎜백그라운드에서는 제출된 인증코드와 세션에 저장된 인증코드를 비교하여 검증을 완료합니다. 🎜🎜다른 인증의 생성 및 사용에 대해서도 원칙은 동일합니다. 개발자는 필요에 따라 다양한 스타일의 임의 인증 코드를 생성할 수 있습니다. 이 기사의 데모에서는 숫자 인증 코드, 숫자 + 문자 인증 코드 및 중국어 인증 코드를 제공합니다. , Google 인증코드 모방, 산술 인증코드 등 🎜

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!