1. 인증번호 간략 소개
1.인증번호는 전자동존컴퓨터와 인간을 구분하는 튜링 테스트의 약자.사용자가 컴퓨터와 사람인지 구분하는 일종의 공적 전자동 프로그램이다.
2.인증코드 주요적용장경: 로그인, 등록 확정 전, 메시지 게시, 회신 전, 기기 요청 의심 시 사람/기기 체크.
3.실현 단계:
(1) 밑그림 생성
의존php 이미지 처리 라이브러리GD,http://php.net/manual/zh/book.image.php
(2) 검증내용 생성
생산하다난수를 생성하여 php함수 rand(;)를 사용한다.
(3) 인증코드 이미지 생성;
(4)검증 내용 확인
php 조작 SESSION 기반 필요, 서버 측에 검증 내용 저장, 프론트 에이젝스 기반
4.개발 전 준비:
(1) php 운전 환경(저는 라라곤을 씁니다.)
WWW 디렉터리에 새로 만들기폴더 test, 새 test.php 파일
<?php
echo "hello,world!!";
Laragon 시작, 페이지 보기:
(2) PHP가 GD를 지원하는지 확인하고 php파일에 함수 phpinfo( ) 출력을 사용하여 보면 된다.
test1.php에 함수 쓰기
<?php
phpinfo();
페이지를 새로 고치고, 나타나는 페이지에서 gd를 검색하여 지원 여부를 확인하고, 지원되지 않는 경우 자체 바이두에서 방법을 찾으십시오:
2. php 구현 인증코드 --- 디지털 인증코드
1.새로운 Captcha.php 파일, 다음 코드를 기입한다.인증 코드 그림 구현:
<?php
//반드시 맨 위, 다중 서버 측에서 인증 코드 정보를 기록하여 사용자가 입력한 후 검사하기 편리해야 한다
session_start();
//기본적으로 검은색 사진을 반환합니다.
$image = imagecreatetruecolor(100, 30);
//배경을 흰색으로 설정합니다.
$bgcolor = imagecolorallocate($image, 255, 255, 255);
//흰색으로 지도를 듬뿍 깔다
imagefill($image, 0, 0, $bgcolor);
//빈 문자열, 순환마다 문자열 뒤에 추가
$captch_code='';
//인증 번호는 4자리입니다.
for ($i=0; $i < 4; $i++) {
$fontsize=6;
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
//무작위 숫자 0-9 생성
$fontcontent = rand(0,9);
$captch_code.= $fontcontent;
//숫자의 위치, 0, 0은 왼쪽 상단 모서리입니다.겹쳐서 불완전하게 보일 수 없다
$x=($i*100/4)+rand(5,10);
$y=rand(5,10);
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_SESSION['authcode'] = $captch_code;
//인증 코드를 위해 간섭 요소를 추가하고, 색상을 조정합니다.,
//포인트
for ($i=0; $i < 200; $i++) {
$pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
}
//인증 코드에 간섭 요소 추가
//실
for ($i=0; $i < 3; $i++) {
$linecolor = imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
imageline($image, rand(1,99), rand(1,29),rand(1,99), rand(1,29) ,$linecolor);
}
header('content-type:image/png');
imagepng($image);
//소각하다
imagedestroy($image);
보기 효과는 다음과 같습니다. 한번 새로 고치면 내용이 바뀔 수 있습니다.
2.form.php 파일을 새로 만들고 다음 코드를 기입한다.확인:
<?php
if (isset($_REQUEST['authcode'])) {
session_start();
if (strtolower($_REQUEST['authcode'])==$_SESSION['authcode']) {
echo'<font color ="#0000CC"> 출력이 정확하다</font>';
# code...
}else{
echo $_REQUEST['authcode'];
echo $_SESSION['authcode'];
echo'<font color ="#CC0000"> 출력 오류</font>';
}
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>인증 번호 확인</title>
</head>
<body>
<form method="" ="post" action="./form.php">
<p>인증 코드 그림:
<img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand(); ?>" alt="" width="100" height="30">
<a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random() ">바꾸다?</a>
</p>
<p>그림에 내용을 입력하세요:
<input type="text" name="authcode" value="" />
</p>
<p>
<input type="submit" value="提交" style="padding: 6px 20px;">
</p>
</form>
</body>
</html>
구현결과는 아래와 같으며, 교환을 클릭하면 인증번호가 변경됩니다.
그림 속 내용을 입력, 맞으면 힌트 입력, 틀리면 힌트 입력, 틀리면 힌트 입력 오류.양식은 스스로 수정한다.
3. php 구현 인증코드 --- 숫자 알파벳 인증코드
1.검증코드 이미지 생성, 무작위 숫자만 생성하는 세대코드는 랜덤 숫자 알파벳을 생성하는 코드로 바뀌며, 기타 코드는 2와 일치한다.
//인증 코드는 4글자, 숫자, 문자입니다.
for ($i=0; $i <4 ; $i++) {
$fontsize=6;
$fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
//자전. o와 0, l과 1이 충돌하기 때문에 우리 사전에 혼동하기 쉬운 것은 포함되지 않습니다.
$data='abcdefghijkmnpqrstuvwxy3456789';
$fontcontent = substr($data,rand(0,strlen($data)) ,1);
$captch_code.= $fontcontent;
$x=($i*100/4)+rand(5,10);
$y=rand(5,10);
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
효과는 다음과 같습니다.
'개발 꿀팁 > PHP' 카테고리의 다른 글
IDEA 2019 PHP 프로젝트 실행 (0) | 2022.06.29 |
---|---|
PHP에서 흔히 볼 수 있는 몇 가지 시간 제한 설정 (0) | 2022.06.29 |
윈도 xp에 php 개발 환경 구축 (0) | 2022.06.29 |
php 한마디 목마 변형 기술 (0) | 2022.06.29 |
PHP는 Mysql에 연결하여 기본적인 추가, 삭제, 변경, 조사-사용자 관리 시스템 구현 (0) | 2022.06.28 |