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 에서 디지털 인증 코드,디지털+알파벳 인증 코드,중국어 인증 코드,구 글 인증 코드,산술 인증 코드 등 을 제공 합 니 다.편폭 에 한 하여 기타 몇 가지 인증 코드 의 생 성 코드 가 생략 되 었 으 니 양해 해 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.