>  기사  >  백엔드 개발  >  PHP에서 다양한 무작위 인증코드를 생성하는 방법

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

墨辰丷
墨辰丷원래의
2018-05-22 09:17:1810858검색

이 글에서는 주로 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(): 선 그리기 선분

imagesetpixel(): 픽셀 그리기

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

imagedestroy(): 이미지가 차지한 메모리를 해제합니다<p class="jb51code"></p>쉽게 호출할 수 있도록 위 코드를 code_num.php로 저장하세요. <p></p> <p></p>Ajax 새로 고침 및 검증<p class="jb51code"></p> <p></p>인증 코드가 생성된 후 실제 프로젝트에 적용해야 합니다. 일반적으로 우리는 인증 코드를 클릭하면 ajax를 사용하여 새로 고침하고 새로운 인증 코드를 생성합니다. 인증번호는 육안으로 매우 혼란스럽습니다.) 식별하기 어렵습니다. 즉, "명확하게 볼 수 없습니다"입니다. 인증 코드를 입력한 후에는 인증 코드가 올바른지 확인해야 합니다. 인증 프로세스는 백그라운드 프로그램에 의해 완료되지만 Ajax를 통해 새로 고침 없는 인증을 달성할 수도 있습니다. <p></p>프런트 엔드 페이지 index.html을 생성하고 jQuery를 로드한 다음 확인 코드 양식 요소를 본문에 추가합니다. <p class="jb51code"></p> <p><pre class="brush:php;toolbar:false">&lt;p&gt;验证码:&lt;input type=&quot;text&quot; class=&quot;input&quot; id=&quot;code_num&quot; name=&quot;code_num&quot; maxlength=&quot;4&quot; /&gt; &lt;img src=&quot;code_num.php&quot; id=&quot;getcode_num&quot; title=&quot;看不清,点击换一张&quot; align=&quot;absmiddle&quot;&gt;&lt;/p&gt; &lt;p&gt;&lt;input type=&quot;button&quot; class=&quot;btn&quot; id=&quot;chk_num&quot; value=&quot;提交&quot; /&gt;&lt;/p&gt;</pre></p> <p></p>html 코드에서 <img src="code_num.php"는 인증코드 생성을 위해 호출되며, 인증코드를 클릭하면 새로고침을 하여 새로운 인증코드를 생성하세요: <p class="jb51code"></p> <p><pre class="brush:js;">$(function(){ //数字验证 $(&quot;#getcode_num&quot;).click(function(){ $(this).attr(&quot;src&quot;,&amp;#39;code_num.php?&amp;#39; + Math.random()); }); ... });</pre></p> <p></p> 인증코드를 새로고침한다는 것은 실제로 인증코드 생성 프로그램을 다시 요청한다는 것을 의미합니다. code_num.php를 호출할 때 임의 매개변수에 대한 캐싱을 방지합니다. 다음으로 인증코드를 입력한 후 "Submit" 버튼을 클릭하면 $.post()를 통해 프론트엔드에서 백그라운드 chk_code.php로 ajax 요청을 보냅니다. <p></p> <p class="art_xg"><pre class="brush:js;">$(function(){ ... $(&quot;#chk_num&quot;).click(function(){ var code_num = $(&quot;#code_num&quot;).val(); $.post(&quot;chk_code.php?act=num&quot;,{code:code_num},function(msg){ if(msg==1){ alert(&quot;验证码正确!&quot;); }else{ alert(&quot;验证码错误!&quot;); } }); }); });</pre></p> <h4></h4>백엔드 chk_code.php 검증: <p><a href="http://www.php.cn/php-weizijiaocheng-397373.html" target="_blank"><span style="color:#f01414;"><pre class="brush:php;toolbar:false">session_start(); $code = trim($_POST[&amp;#39;code&amp;#39;]); if($code==$_SESSION[&quot;helloweba_num&quot;]){ echo &amp;#39;1&amp;#39;; }</pre></span></a><br>백그라운드는 제출된 인증코드와 세션에 저장된 인증코드를 비교하여 인증을 완료합니다. </p> <p>다른 인증의 생성 및 사용에 대해서도 원칙은 동일합니다. 개발자는 필요에 따라 다양한 스타일의 임의 인증 코드를 생성할 수 있습니다. 이 기사의 데모에서는 숫자 인증 코드, 숫자 + 문자 인증 코드 및 중국어 인증 코드를 제공합니다. , Google 인증코드 모방, 산술 인증코드 등 <a href="http://www.php.cn/php-weizijiaocheng-397071.html" target="_blank"><span style="color:#f01414;"></span></a>관련 권장 사항: <br></p> <p>php 이미지<a href="http://www.php.cn/php-weizijiaocheng-397019.html" target="_blank">인증 코드<span style="color:#f01414;">code_php 기술 생성</span></a><br></p> <p>실용적인 PHP 분석 예</p>인증 코드<p class="clearfix">class<span class="jbTestPos"></span></p>🎜🎜php 웹 페이지 구현 🎜인증코드🎜 상세 함수 메소드 설명🎜🎜🎜🎜🎜🎜🎜🎜🎜

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

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