PHP 는 다양한 일반적인 인증 코드 와 Ajax 인증 과정 을 생 성 합 니 다.

5172 단어 php인증번호ajax
인증 코드 는 WEB 응용 프로그램 에서 매우 중요 하 며,일반적으로 사용자 가 악의 적 으로 양식 을 제출 하 는 것 을 방지 하 는 데 사용 된다.예 를 들 어 악의 적 인 등록 과 로그 인,포럼 의 악의 적 인 관수 등 이다.본 고 는 실례 를 통 해 PHP 를 사용 하여 각종 흔히 볼 수 있 는 인증 코드 를 생 성 할 것 이다.이 는 디지털 인증 코드,디지털+자모 인증 코드,중국어 인증 코드,산술 인증 코드 등 과 그 Ajax 검증 과정 을 포함한다.

PHP 인증 코드 이미지 생 성
PHP 인증 코드 생 성 원리:PHP 의 GD 라 이브 러 리 를 사용 하여 인증 코드 가 있 는 그림 을 생 성하 고 인증 코드 를 Session 에 저장 합 니 다.
PHP 에서 인증 코드 를 생 성 하 는 대략적인 절 차 는 다음 과 같 습 니 다.
1.png 그림 만 들 기;
2.그림 에 배경 색 설정 하기;
3.글꼴 색상 과 스타일 설정 하기;
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():새 그림 만 들 기
imagecoloralocate():그림 에 색상 할당
imagefill():그림 채 우기
imagerectangle():사각형(테두리)을 그립 니 다.
imagesetstyle():선 스타일 설정
imageline():선 을 그립 니 다.
imagesetpixel():픽 셀 그리 기
imagepng():브 라 우 저 나 파일 에 PNG 형식 으로 그림 을 출력 합 니 다.
imagedestroy():그림 이 차지 하 는 메모리 방출
위 코드 를 code 로 저장 합 니 다.호출 할 수 있 도록 num.php.
Ajax 리 셋 및 검증
인증 코드 가 생 성 된 후에 저 희 는 실제 프로젝트 에서 응용 해 야 합 니 다.보통 ajax 를 사용 하면 인증 코드 를 클릭 할 때 새로운 인증 코드 를 새로 고 칠 수 있 습 니 다(가끔 생 성 된 인증 코드 는 육안 으로 식별 하기 어렵 습 니 다).즉,'잘 보이 지 않 고 바 꾸 기'입 니 다.인증 코드 를 작성 한 후에 작성 한 인증 코드 가 정확 한 지 검증 해 야 합 니 다.검증 과정 은 백 엔 드 프로그램 으로 이 루어 져 야 합 니 다.그러나 저 희 는 ajax 를 통 해 리 셋 없 는 인증 을 실현 할 수 있 습 니 다.
저 희 는 전단 페이지 index.html 를 만 들 고 jquery 를 불 러 오 는 동시에 body 에 인증 코드 시트 요 소 를 추가 합 니 다.

<p>   :<input type="text" class="input" id="code_num" name="code_num" maxlength="4" /> 
<img src="code_num.php" id="getcode_num" title="   ,     " align="absmiddle"></p> 
<p><input type="button" class="btn" id="chk_num" value="  " /></p>
html 코드 중, $(function(){ // $("#getcode_num").click(function(){ $(this).attr("src",'code_num.php?' + Math.random()); }); ... });인증 코드 를 새로 고 치 는 것 은 인증 코드 생 성 프로그램 을 다시 요청 한 것 입 니 다.여기 서 주의해 야 할 것 은 code 호출 입 니 다.num.php 는 캐 시 를 방지 하기 위해 무 작위 파 라 메 터 를 가 져 가 야 합 니 다.다음 인증 코드 를 작성 한 후"제출"단 추 를 누 르 고$.post()를 통 해 프론트 데스크 톱 chkcode.php 에서 ajax 요청 을 보 냅 니 다.

$(function(){ 
... 
$("#chk_num").click(function(){ 
var code_num = $("#code_num").val(); 
$.post("chk_code.php?act=num",{code:code_num},function(msg){ 
if(msg==1){ 
alert("     !"); 
}else{ 
alert("     !"); 
} 
}); 
}); 
});
백 스테이지 chkcode.php 인증:

session_start(); 
$code = trim($_POST['code']); 
if($code==$_SESSION["helloweba_num"]){ 
echo '1'; 
}
백 엔 드 는 제출 한 인증 코드 와 session 에 저 장 된 인증 코드 를 비교 하여 인증 을 완료 합 니 다.
다른 몇 가지 검증 의 생 성과 사용 에 있어 그 원 리 는 똑 같 습 니 다.개발 자 는 수요 에 따라 다양한 스타일 의 랜 덤 인증 코드 를 만 들 수 있 습 니 다.본 고 는 demo 에서 디지털 인증 코드,디지털+알파벳 인증 코드,중국어 인증 코드,구 글 인증 코드,산술 인증 코드 등 을 제공 합 니 다.편폭 에 한 하여 기타 몇 가지 인증 코드 의 생 성 코드 가 생략 되 었 으 니 양해 해 주 십시오.

좋은 웹페이지 즐겨찾기