>  기사  >  백엔드 개발  >  thinkPHP에서 간단한 인증코드 구현 방법

thinkPHP에서 간단한 인증코드 구현 방법

不言
不言원래의
2018-06-07 16:53:542507검색

이 글은 thinkPHP의 간단한 인증코드 구현 방법을 주로 소개하고, thinkPHP 인증코드의 구현 원리, 단계, 호출 기법을 예시 형태로 분석해 도움이 필요한 친구들이 참고할 수 있습니다

본 글의 예시는 설명합니다. thinkPHP에서 검증 코드 구현 간단한 구현 방법. 참고용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

작업 렌더링은 다음과 같습니다.

1.php 측에서 인증 코드 기능을 생성합니다.

public function verify(){
    // 验证码
    import("@.Util.Image");
    Image::buildImageVerify(4,1,'png',40,20,'verify');
}
/**
* 生成图像验证码
* @static
* @access public
* @param string $length 位数
* @param string $mode 类型
* @param string $type 图像格式
* @param string $width 宽度
* @param string $height 高度
* @return string
*/
static function buildImageVerify($length=4, $mode=1, $type='png', $width=48, $height=22, $verifyName='verify') {
    import('ORG.Util.String');
    $randval = String::randString($length, $mode);
    session($verifyName, md5($randval));
    $width = ($length * 10 + 10) > $width ? $length * 10 + 10 : $width;
    if ($type != 'gif' && function_exists('imagecreatetruecolor')) {
      $im = imagecreatetruecolor($width, $height);
    } else {
      $im = imagecreate($width, $height);
    }
    $r = Array(225, 255, 255, 223);
    $g = Array(225, 236, 237, 255);
    $b = Array(225, 236, 166, 125);
    $key = mt_rand(0, 3);
    $backColor = imagecolorallocate($im, $r[$key], $g[$key], $b[$key]);  //背景色(随机)
    $borderColor = imagecolorallocate($im, 100, 100, 100); //边框色
    imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backColor);
    imagerectangle($im, 0, 0, $width - 1, $height - 1, $borderColor);
    $stringColor = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));
    // 干扰
    for ($i = 0; $i < 10; $i++) {
      imagearc($im, mt_rand(-10, $width), mt_rand(-10, $height), mt_rand(30, 300), mt_rand(20, 200), 55, 44, $stringColor);
    }
    for ($i = 0; $i < 25; $i++) {
      imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $stringColor);
    }
    for ($i = 0; $i < $length; $i++) {
      imagestring($im, 5, $i * 10 + 5, mt_rand(1, 8), $randval{$i}, $stringColor);
    }
    Image::output($im, $type);
}

이미지를 생성하는 동안 이미지가 세션.

2. 페이지 쪽

<img id="verifyImg" src="{sh::U(&#39;Agent/Login/verify&#39;)}" onClick="changeVerify()" title="点击刷新验证码" /></p>

은 src에서 직접 호출됩니다.

변경 사항을 트리거하려면 클릭하세요.

function changeVerify(){
 verifyURL = "{sh::U(&#39;Agent/Login/verify&#39;)}";
 $("#verifyImg").attr("src",verifyURL);
 return false;
}

3. 백그라운드 검증, 게시물 필드가 세션의 인증 코드와 일치하는지 비교합니다.

if($_SESSION[&#39;verify&#39;] != md5($_POST[&#39;verify&#39;])) {
  $this->error(&#39;验证码错误!&#39;);
}

위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

Thinkphp3.2.3에서 phpqrcode로 로고가 있는 QR 코드를 생성하는 방법

thinkphp와 함께 제공되는 인증 코드에 대한 종합 분석

thinkPHP 프레임워크를 사용하여 바코드를 생성하는 방법

위 내용은 thinkPHP에서 간단한 인증코드 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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