간단한 인증번호를 만드세요

인증코드란 무엇인가요?

인증 코드는 무작위로 생성된 숫자 또는 기호의 문자열에서 사진을 생성하는 것입니다. 일부 간섭 픽셀이 사진에 추가됩니다(OCR 방지). 사용자는 육안으로 인증 코드 정보를 식별하고 입력할 수 있습니다. 웹사이트 인증을 위해 제출하는 양식입니다. 해당 기능은 인증에 성공한 후에만 사용할 수 있습니다.

인증 코드 기능:

해커가 특정 프로그램을 사용하여 무차별 대입 공격을 통해 특정 등록 사용자에게 지속적인 로그인을 시도하는 것을 효과적으로 방지합니다. 실제로 최신 인증 코드는 일반적으로 기계가 일괄적으로 등록하는 것을 방지하고 기계가 일괄적으로 응답을 게시하는 것을 방지합니다. 현재 많은 웹사이트에서는 사용자가 로봇을 사용하여 자동으로 등록, 로그인 및 스팸을 보내는 것을 방지하기 위해 인증 코드 기술을 사용합니다.

우리가 여기서 주로 이야기하는 것은 무작위 디지털 사진 인증 코드입니다. 사진의 문자는 비교적 규칙적이며 일부는 임의의 인터페론이 첨가되었을 수 있으며 일부는 임의의 문자 색상이 있습니다.

png 이미지 확인 코드를 생성하는 기본 이미지 게시:

1. png 이미지 생성
2. 이미지의 배경색 설정
3. 글꼴 색상 및 스타일 설정
4. 인증코드 코드
5. 생성된 각 문자의 회전 각도와 위치를 조정하고 png 이미지에 그립니다
6. 등록 기계가 원본 이미지를 분석하여 악성 등록을 방지하도록 노이즈 및 간섭선을 추가합니다
7. 8. 이미지가 차지한 메모리를 해제합니다.

다음은 PHP 인증 코드 코드의 예입니다.

<?php
//设置session,必须处于脚本最顶部
  session_start();
  
  $image = imagecreatetruecolor(100, 30);    //1>设置验证码图片大小的函数
  //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);
  $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff
  //6>区域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的区域着色,col 表示欲涂上的颜色
  imagefill($image, 0, 0, $bgcolor);
  //10>设置变量
  $captcha_code = "";
  //7>生成随机数字
  for($i=0;$i<4;$i++){
    //设置字体大小
    $fontsize = 6;
    //设置字体颜色,随机颜色
    $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));      //0-120深颜色
    //设置数字
    $fontcontent = rand(0,9);
    //10>.=连续定义变量
    $captcha_code .= $fontcontent;
    //设置坐标
    $x = ($i*100/4)+rand(5,10);
    $y = rand(5,10);
   imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
  }
  //10>存到session
  $_SESSION['authcode'] = $captcha_code;
  //8>增加干扰元素,设置雪花点
  for($i=0;$i<200;$i++){
    //设置点的颜色,50-200颜色比数字浅,不干扰阅读
    $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));
    //imagesetpixel — 画一个单一像素
    imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
  }
  //9>增加干扰元素,设置横线
  for($i=0;$i<4;$i++){
    //设置线的颜色
    $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));
    //设置线,两点一线
    imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor);
  }
  //2>设置头部,image/png
  header('Content-Type: image/png');
  //3>imagepng() 建立png图形函数
  imagepng($image);
  //4>imagedestroy() 结束图形函数 销毁$image
  imagedestroy($image);
?>

인증 코드 파일을 사용하면 다음과 유사한 그림이 나타납니다.

24.png

좌측상단 인증코드 사진을 클릭하시면, 획득한 4자리 숫자가 변경됩니다.

지속적인 학습
||
<?php //设置session,必须处于脚本最顶部 session_start(); $image = imagecreatetruecolor(100, 30); //1>设置验证码图片大小的函数 //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue); $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff //6>区域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的区域着色,col 表示欲涂上的颜色 imagefill($image, 0, 0, $bgcolor); //10>设置变量 $captcha_code = ""; //7>生成随机数字 for($i=0;$i<4;$i++){ //设置字体大小 $fontsize = 6; //设置字体颜色,随机颜色 $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120)); //0-120深颜色 //设置数字 $fontcontent = rand(0,9); //10>.=连续定义变量 $captcha_code .= $fontcontent; //设置坐标 $x = ($i*100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } //10>存到session $_SESSION['authcode'] = $captcha_code; //8>增加干扰元素,设置雪花点 for($i=0;$i<200;$i++){ //设置点的颜色,50-200颜色比数字浅,不干扰阅读 $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200)); //imagesetpixel — 画一个单一像素 imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor); } //9>增加干扰元素,设置横线 for($i=0;$i<4;$i++){ //设置线的颜色 $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220)); //设置线,两点一线 imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor); } //2>设置头部,image/png header('Content-Type: image/png'); //3>imagepng() 建立png图形函数 imagepng($image); //4>imagedestroy() 结束图形函数 销毁$image imagedestroy($image); ?>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~