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
모든 것이 순조롭게 진행되면 다음과 같은 인증 코드가 나타납니다.
양식에 인증 코드 사용
양식 페이지에서 인증 코드를 사용하려면 html img 태그를 사용하여 호출됩니다.
<input type="text" name="verify"> <img id="verifyImg" src="-Article-verify" onClick="changeVerify()" title="点击刷新thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요" / alt="thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요" >
src 속성값은 인증코드 방식의 접속 주소로, 실제 상황에 따라 달라집니다.
인증코드 새로고침
인증코드 이미지를 클릭하면 자바스크립트의 ChangeVerify() 함수가 실행되어 인증코드를 다시 읽어 인증코드를 새로고침합니다. 함수 참조는 다음과 같습니다.
<script language="JavaScript"> function changeVerify(){ var timenow = new Date().getTime(); document.getElementById('verifyImg').src='-Article/verify/'+timenow; } </script>
인증코드 확인
인증 코드 확인을 호출하면 buildImageVerify는 이 인증 코드의 MD5 정보를 기록합니다. 양식 확인 작업에서 다음 방법을 사용하여 확인 코드가 올바른지 확인하세요.
if($_SESSION['verify'] != md5($_POST['verify'])) { $this->error('thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요错误!'); }
$_SESSION['verify']의 확인 이름은 buildImageVerify 메소드의 기본 SESSION 등록 이름입니다. 자세한 내용은 buildImageVerify 구문을 참조하세요.
위의 예는 ThinkPHP 인증 코드를 사용하는 가장 간단한 방법을 보여줍니다. 위 예의 인증 코드는 4자리입니다. 더 많은 스타일의 인증 코드와 중국어 인증 코드를 사용하려면 이 섹션의 나머지 부분인 "ThinkPHP는 다른 스타일과 중국어 인증 코드를 사용합니다."를 참조하세요.
인증번호가 표시되지 않는 이유
인증코드가 표시되지 않는 것으로 확인되었습니다. 가능한 원인은 다음과 같습니다.
1. PHP가 GD 라이브러리 지원을 설치했는지 여부.
2. 출력 전 출력(특히 UTF8 BOM 헤더 정보 출력)이 있나요?
3. Image 클래스 라이브러리를 올바르게 가져왔는지 여부.
4. 양식페이지인 경우 인증코드 표시방법이 올바르게 호출되었는지 확인해주세요.
thinkphp3.2에서 인증코드를 생성하는 방법과 인증코드를 새로고침하는 방법을 소개합니다
1. 확인 코드를 생성하는 클래스를 인스턴스화합니다(이 메소드는 쉽게 액세스할 수 있도록 IndexController에 배치됨)
/** * * thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요生成 */ public function verify_c(){ $Verify = new \Think\Verify(); $Verify->fontSize = 18; $Verify->length = 4; $Verify->useNoise = false; $Verify->codeSet = '0123456789'; $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="thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요" type="text"> <img style="max-width:90%" class="left15" style="max-width:90%" alt="thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요" src="{:U('Home/Index/verify_c',array())}" title="点击刷新"> </p>
3. 위와 같이 작성하면 페이지 초기화를 위한 인증코드가 나옵니다. 그다음에 쓰는 것은 인증코드 이미지를 클릭한 후 새로운 인증코드 이미지를 새로고침하는 것입니다. (이미지의 src 속성을 수정하면 됩니다.) jquery를 통한 요청 처리 기능은 이전 사진에 대한 요청을 구별하기 위해 요청 뒤에 난수를 추가하는 점만 제외하면 동일합니다.
// thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요生成 var captcha_img = $('#captcha-container').find('img') var verifyimg = captcha_img.attr("src"); captcha_img.attr('title', '点击刷新'); captcha_img.click(function(){ if( verifyimg.indexOf('?')>0){ $(this).attr("src", verifyimg+'&random='+Math.random()); }else{ $(this).attr("src", verifyimg.replace(/\?.*$/,'')+'?'+Math.random()); } });
4. 인증번호가 올바르게 입력되었는지 확인
a. 공통 디렉터리의 function.php에 전역 함수를 추가합니다.
/** * thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요检查 */ function check_verify($code, $id = ""){ $verify = new \Think\Verify(); return $verify->check($code, $id); }
b. 양식 제출 컨트롤러에 해당하는 처리 방법에 확인 코드를 추가합니다
// 检查thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요 $verify = I('param.verify',''); if(!check_verify($verify)){ $this->error("亲,thinkphp3.2 새로고침을 클릭하여 확인 code_php 팁을 생성하세요输错了哦!",$this->site_url,9); }
이제 tp3.2 인증코드를 사용할 수 있습니다.
보충: 글을 쓸 때 네 번째 단계 b를 검증을 위해 ajax에 넣고 테스트 결과를 반환했습니다. 그런 다음 반환된 결과에 따라 양식을 제출할지 여부를 결정합니다. 그러나 1차 인증을 통과한 후에는 두 번째 인증이 작동하지 않습니다.
이 글의 전체 내용입니다. 글 말미에 작은 질문이 있습니다. 또한 이 글이 여러분의 연구에 도움이 되기를 바랍니다.