>  기사  >  백엔드 개발  >  thinkphp3.2 새로고침을 클릭하여 인증코드를 생성하세요

thinkphp3.2 새로고침을 클릭하여 인증코드를 생성하세요

高洛峰
高洛峰원래의
2017-02-03 17:53:351546검색

thinkphp3.2 인증코드 사용법을 소개하기에 앞서 먼저 ThinkPHP 인증코드에 대해 구체적으로 소개하겠습니다.

ThinkPHP에는 인증코드 지원 기능이 내장되어 있습니다. 직접 사용됩니다. 인증코드를 사용하려면 확장 클래스 라이브러리에 ORG.Util.Image 클래스 라이브러리와 ORG.Util.String 클래스 라이브러리를 가져와야 합니다.
인증 코드 메소드
인증 코드를 표시하기 위해 모듈 클래스에 verify 메소드를 추가합니다. 가장 간단한 예:

Public function verify(){
  // 导入Image类库
  import("ORG.Util.Image");
  Image::buildImageVerify();
}

가져오기 메소드가 ThinkPHP 클래스에 내장되어 있습니다. 라이브러리 및 파일 가져오기 방법을 사용하는 경우, 위 예에서 가져온 파일은 ThinkPHP 시스템 디렉터리에 있는 Lib/ORG/Util/Image.class.php 파일입니다. Image 클래스 라이브러리가 Lib/ORG와 같은 현재 프로젝트에 복사된 경우 다음을 사용할 수 있습니다.

import("@.Util.Image");

가져오기 방법은 ThinkPHP의 내장 클래스 라이브러리이자 파일 가져오기 방법입니다. 위의 예와 같이 가져온 파일은 ThinkPHP 시스템 디렉터리에 있는 Lib/ORG/Util/Image.class.php 파일입니다.
인증코드 접속
브라우저에서 직접 인증코드 방식에 접근하여 인증코드가 정상적으로 표시되는지 확인할 수 있습니다:
http://127.0.0.1/index.php/Public/verify
모든 것이 정상이면 다음과 같이 인증코드가 표시됩니다.

thinkphp3.2 새로고침을 클릭하여 인증코드를 생성하세요

양식에서 인증코드 사용하기
양식 페이지에서 인증코드를 사용하려면, html img 태그로 호출됩니다:

<input type="text" name="verify">
<img  id="verifyImg" src="-Article-verify" onClick="changeVerify()" title="点击刷新验证码" / alt="thinkphp3.2 새로고침을 클릭하여 인증코드를 생성하세요" >

src 속성 값은 인증 코드 방식 액세스 주소로, 실제 상황에 따라 달라집니다.
인증코드 새로고침
인증코드 이미지를 클릭하면 자바스크립트의 ChangeVerify() 함수가 실행되어 인증코드를 다시 읽어 인증코드를 새로고침합니다. 이 함수의 참조는 다음과 같습니다.

<script language="JavaScript">
function changeVerify(){
 var timenow = new Date().getTime();
 document.getElementById(&#39;verifyImg&#39;).src=&#39;-Article/verify/&#39;+timenow;
}
</script>

인증코드 확인
인증코드 verify 호출 시 buildImageVerify는 이 인증코드의 MD5 정보를 기록합니다. 양식 확인 작업에서 다음 방법을 사용하여 확인 코드가 올바른지 확인하십시오.

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

$_SESSION['verify']의 확인 이름은 기본 SESSION 등록 이름입니다. buildImageVerify 메소드, 특히 buildImageVerify 구문을 참조하세요.
위의 예는 ThinkPHP 인증 코드를 사용하는 가장 간단한 방법을 보여줍니다. 위 예의 인증 코드는 4자리입니다. 더 많은 스타일의 인증 코드와 중국어 인증 코드를 사용하려면 이 섹션의 나머지 부분인 "ThinkPHP는 다른 스타일과 중국어 인증 코드를 사용합니다."를 참조하세요.
인증코드가 표시되지 않는 이유
인증코드가 표시되지 않는 것으로 확인됩니다. 가능한 원인은 다음과 같습니다.
1. PHP가 GD 라이브러리 지원을 설치했는지 여부.
2. 출력 전 출력이 있나요(특히 UTF8 BOM 헤더 정보 출력).
3. 이미지 클래스 라이브러리를 올바르게 가져왔는지 여부.
4. 양식페이지인 경우 인증코드 표시방법이 제대로 호출되는지 확인해주세요.

thinkphp3.2 인증코드 생성 구현 방법을 소개하고, 인증코드 새로고침을 클릭하면 구체적인 내용은 다음과 같습니다

1. (이 메소드는 IndexController 내부에 있어서 접근이 쉽습니다)

/**
 *
 * 验证码生成
 */
public function verify_c(){
  $Verify = new \Think\Verify();
  $Verify->fontSize = 18;
  $Verify->length  = 4;
  $Verify->useNoise = false;
  $Verify->codeSet = &#39;0123456789&#39;;
  $Verify->imageW = 130;
  $Verify->imageH = 50;
  //$Verify->expire = 600;
  $Verify->entry();
}

2. 프런트에서 생성해야 하는 이미지의 src 속성이 인증코드를 가리킵니다

<p class="top15 captcha" id="captcha-container">
 <input name="verify" width="50%" height="50" class="captcha-text" placeholder="验证码" type="text">        
 <img width="30%" class="left15"    style="max-width:90%" alt="验证码" src="{:U(&#39;Home/Index/verify_c&#39;,array())}" title="点击刷新">
</p>

3. 위와 같이 작성하시면 페이지 초기화를 위한 인증코드가 나옵니다. 아래에 적힌 내용은 인증코드 이미지를 클릭 후 새로운 인증코드 이미지를 새로고침 하면 됩니다. jquery로 이미지의 src 속성을 수정하면 됩니다. 요청 처리 기능은 동일하며, 이전 사진에 대한 요청을 구분하는 임의의 숫자를 추가하면 됩니다.

// 验证码生成
var captcha_img = $(&#39;#captcha-container&#39;).find(&#39;img&#39;)
var verifyimg = captcha_img.attr("src");
captcha_img.attr(&#39;title&#39;, &#39;点击刷新&#39;);
captcha_img.click(function(){
  if( verifyimg.indexOf(&#39;?&#39;)>0){
    $(this).attr("src", verifyimg+&#39;&random=&#39;+Math.random());
  }else{
    $(this).attr("src", verifyimg.replace(/\?.*$/,&#39;&#39;)+&#39;?&#39;+Math.random());
  }
});

4. 인증코드 입력이 맞는지 확인
a. 공통 디렉토리에 전역 function.php 추가

/**
 * 验证码检查
 */
function check_verify($code, $id = ""){
  $verify = new \Think\Verify();
  return $verify->check($code, $id);
}

b. 🎜>

양식 제출 컨트롤러에 해당하는 처리 방법에 tp3.2 인증 코드를 사용하면 됩니다.

보충: 글을 작성할 때 네 번째 단계 b를 검증을 위해 ajax에 넣고 테스트 결과를 반환했습니다. 그러면 반환된 결과에 따라 양식을 제출할지 여부가 결정됩니다. 하지만 1차 인증을 통과한 후 두 번째 인증은 아직까지 이루어지지 않습니다.


이 기사의 전체 내용입니다. 기사 마지막에 작은 질문이 있습니다. 이 기사가 여러분의 연구에 도움이 되기를 바랍니다.

thinkphp3.2와 관련된 더 많은 기사를 보려면 새로고침을 클릭하여 인증 코드를 생성하세요. PHP 중국어 웹사이트를 주목하세요!

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