> 백엔드 개발 > PHP 튜토리얼 > 확인 코드 및 서버 측 확인 코드를 구현하는 PHP 단계

확인 코드 및 서버 측 확인 코드를 구현하는 PHP 단계

不言
풀어 주다: 2023-04-03 16:04:01
원래의
2487명이 탐색했습니다.

이 글에서는 PHP에서 인증 코드를 구현하는 단계와 서버 측 인증 코드에 대해 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

인증코드란 무엇인가요? 인증코드는 사용자가 컴퓨터인지 사람인지 구별하는 공개 프로그램입니다.

인증코드 생성에는 4단계가 필요합니다.

1: 기본 맵 생성

2: 인증 콘텐츠 생성

3: 인증 코드 생성 Content

4: 콘텐츠 확인 및 확인

첫 번째 단계, 첫 번째 단계는 기본 이미지를 생성하는 것입니다:

목표: php

를 통해 100*30 크기의 이미지를 생성합니다. 방법: imagecreatetruecolor($ width,$ height);

참고: GD 확장에 의존

이미지를 출력하기 전에 해당 이미지의 헤더 정보를 미리 출력해야 합니다.-》》기본 http 헤더 보내기

이 방법은 검정색 배경을 출력합니다. default

imagecreatetruecolor() 새로 만들기 트루 컬러 이미지는 $image로 표현되는데, 앞으로 많이 사용될 것입니다

트루 컬러 이미지를 생성하므로 다양한 색상이 필요합니다. 다음으로 imagecolorallocate. (캔버스 선택, 3색 매개변수)

이미지 채우기란 무엇을 의미하나요? (캔버스 선택, 시작 위치, 색상 선택)

이제 기본 이미지가 생성되었으니 재료를 추가해 보겠습니다

$image = imagecreatetruecolor (100,30)

$bgcolor = imagecolorallocate($image,255,255,255);

imagefill ($image,0,0,$bgcolor)

2단계: 인증 콘텐츠 생성

목표: 무작위로 숫자 생성( 크기, 시작 위치, 내용, 색상)

메서드: 루프를 통해, 이미지스트링 함수, 레벨 문자열 한 줄 생성(이미지스트링의 매개변수 위치에 따라 채우기)

참고: 글꼴 크기 제어, N/n

for($i=0;$<4;i++){

여기서 imagestring의 매개변수에 따라 변수를 정의하고 변수에 값을 할당합니다

imagestring($image,$fontsze,$x,$y, $fontcontent,$fontcolor)

}

$fontcontent = substr($data,rand (0,strlen($data)),1)

숫자와 문자의 조합을 원할 경우 substr 메소드 반환된 문자열은 무작위로 데이터를 얻습니다. 여기서부터 최대 1개의 길이가 있습니다

세 번째 단계는 인증 코드 콘텐츠를 생성하는 것입니다

목표: 인증 코드에 간섭 요소를 추가합니다. 간섭 요소는 점 또는 선입니다

방법: imagesetpixel point, imageline-line(리소스 파일, 시작 위치, 색상)

참고: 게스트를 압도하지 않도록 간섭 요소의 색상과 수량을 제어해야 합니다.

4단계: 세션을 통해 인증 정보를 저장합니다.

목표: 사용자가 인증 코드를 입력한 후 인증이 용이하도록 서버 측에 기록합니다.

메서드: session_start()

참고: session_start()는 스크립트 상단에 있어야 합니다.

여러 서비스의 경우 세션 관리를 중앙 집중적으로 관리하는 것을 고려해야 합니다

imagepng 이미지를 브라우저 또는 png 형식으로 파일로 출력합니다.

imagedestroy 이미지를 파기합니다. 좋은 습관

이러한 방법에서는 리소스가 많이 사용됩니다. 즉, 각 방법에는 $image 캔버스가 필요합니다

<php?
$image = imagecreatetruecolor( 100,30);
$bgcolor = imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$bgcolor);
// for($i=0;$i<4;$i++){
// $fontsize = 6;
// $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
// $fontcontent = rand(0,9);
// $x = ($i*100/4)+rand(5,10);
// $y = rand(5,10);
// imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor );
// }
$captch_code= &#39;&#39;;
for($i=0 ;$i<4;$i++){
    $fontsize = 6;
    $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
    $data = &#39;abcdefhijkimnpqrstuvwxy345678&#39;;
    $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 );
    
}
$SESSION[&#39;authcode&#39;]=$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,99),$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,99),rand(1,99),rand(1,99),$pointcolor);
}
header(&#39;content-type: image/png&#39;);
imagepng( $image);
//end;
imagedestroy( $iamge);
?>
로그인 후 복사

인증 코드 생성은 여기서 끝나고 다음 단계는 서버 측에서 인증을 수행하는 것입니다

src="captcha-2.php?r=<?php echo rand();?>"   对于这个r 找了资料,没什么大用
로그인 후 복사

이것이 의도입니다

여기에서도 t를 사용합니다 , so r ah t ah

경우를 고려하면 여기에서는 strtolower()를 사용하여 사용자가 입력한 모든 대문자를 소문자로 변환합니다

<?php

if(isset($_REQUEST[&#39;code&#39;]))
{
    session_start();
    if (strtolower($_REQUEST[&#39;code&#39;])==$_SESSION[&#39;code&#39;])
    {
        header(&#39;Content-type: text/html; charset=UTF8&#39;);
        echo &#39;<h1 color="#0000CC">输入正确</h1>&#39;;
    }
    else{
        header(&#39;Content-type: text/html; charset=UTF8&#39;);
        echo &#39;<h1 color="#CC0000"><b>输入错误</b></h1>&#39;;
    }
    exit();
}

?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>确认验证</title>
</head>
<body>
<form method="post" action="form.php">
    <p>验证码图片:<img border="1" src="captcha-2.php?r=<?php echo rand();?>" width="100" height="30">

    </p>
    <p>请输入图片的内容:<input type="text" name="code" value=""/></p>
    <p><input type="submit" value="提交" style="padding:6px 20px;"></p>
</form>
</body>
</html>
로그인 후 복사

추천 관련 기사:

PHP를 사용하여 파일 내용을 txt로 변환하는 방법 배열을 사용하고 줄 번호로 지정된 내용을 가져옵니다(예)

php는 어떻게 경도와 위도를 사용하여 두 지점 사이의 거리를 계산합니까(순수 코드)

php는 어떻게 디렉토리와 디렉토리를 삭제합니까? 모든 파일

위 내용은 확인 코드 및 서버 측 확인 코드를 구현하는 PHP 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿