PHP 기반의 웹사이트 로그인 홈페이지 이미지에 대한 인증코드 생성 방법

墨辰丷
풀어 주다: 2023-03-29 15:28:01
원래의
1514명이 탐색했습니다.

거의 모든 웹사이트 로그인 페이지에는 인증 코드가 있습니다. 인증 코드는 정크 등록 기계가 대량의 사용자 계정을 등록하여 서버 메모리를 점유하고 서버를 마비시키는 것을 방지하는 데 사용되는 보안 보호 메커니즘입니다. 다음으로, 이 글을 통해 PHP 드로잉 웹사이트 로그인 홈페이지 사진 인증 코드를 소개하겠습니다. 필요한 친구들은 참고하시면 됩니다

인증 코드는 거의 모든 웹사이트 로그인 페이지에 존재하는 보안 보호 메커니즘입니다. 스팸 등록 기계가 대량의 사용자 계정을 등록하여 서버 메모리를 점유하고 서버를 마비시키는 것을 방지하기 위해 등록 시 작업 확인이 필요합니다.

사진 인증 코드 구현은 매우 간단합니다. 먼저 지정된 문자 집합에서 일정 개수의 문자를 무작위로 선택하여 캔버스에 불규칙하게 그린 다음 간섭점과 간섭 요소를 적절하게 추가하고 마지막으로 그림을 출력하면 새로운 인증 코드가 완성됩니다.

먼저 생성된 인증 코드를 보여주세요:

새로고침을 클릭하세요:

효과에 매우 만족하신다면 아래를 계속 읽어주세요.

프런트 엔드 코드는 다음과 같습니다.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>This is a test!</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
</head>
<body>
<form name="form">
<input type="text" placeholder="账号"/><br/>
<input type="password" placeholder="密码"/><br/>
<input type="text" placeholder="验证码"/>
<img id="verImg" src="libs/verification.php"/>
<a href="#" class="change" onclick="changeVer()">点击刷新</a><br/>
<input type="submit" value="登录"/>
</form>
<script type="text/javascript">
//刷新验证码
function changeVer(){
document.getElementById("verImg").src="libs/verification.php?tmp="+Math.random();
}
</script>
</body>
</html>
로그인 후 복사

PHP 스크립트 파일 확인 코드의 코드는 다음과 같습니다.

<?php
session_start();
//开启session记录验证码数据
vCode(4, 15);//设置验证码的字符个数和图片基础宽度
//vCode 字符数目,字体大小,图片宽度、高度
function vCode($num = 4, $size = 20, $width = 0, $height = 0) {
!$width && $width = $num * $size * 4 / 5 + 15;
!$height && $height = $size + 10;
//设置验证码字符集合
$str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
//保存获取的验证码
$code = &#39;&#39;;
//随机选取字符
for ($i = 0; $i < $num; $i++) {
$code .= $str[mt_rand(0, strlen($str)-1)];
}
//创建验证码画布
$im = imagecreatetruecolor($width, $height);
//背景色
$back_color = imagecolorallocate($im, mt_rand(0,100),mt_rand(0,100), mt_rand(0,100));
//文本色
$text_color = imagecolorallocate($im, mt_rand(100, 255), mt_rand(100, 255), mt_rand(100, 255));
imagefilledrectangle($im, 0, 0, $width, $height, $back_color);
// 画干扰线
for($i = 0;$i < 5;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360), mt_rand(0, 360), $font_color);
}
// 画干扰点
for($i = 0;$i < 50;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);
}
//随机旋转角度数组
$array=array(5,4,3,2,1,0,-1,-2,-3,-4,-5);
// 输出验证码
// imagefttext(image, size, angle, x, y, color, fontfile, text)
@imagefttext($im, $size , array_rand($array), 12, $size + 6, $text_color, &#39;c:\WINDOWS\Fonts\simsun.ttc&#39;, $code);
$_SESSION["VerifyCode"]=$code;
//no-cache在每次请求时都会访问服务器
//max-age在请求1s后再次请求会再次访问服务器,must-revalidate则第一发送请求会访问服务器,之后不会再访问服务器
// header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
header("Cache-Control: no-cache");
header("Content-type: image/png;charset=gb2312");
//将图片转化为png格式
imagepng($im);
imagedestroy($im);
}
?>
로그인 후 복사

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들께 도움이 되길 바랍니다. 학습.

관련 권장 사항:

PHP에서 경로 및 디렉터리를 얻는 방법 요약

phpcurl을 사용하여 원격 이미지 구현 방법 얻기

PHP 언어에서 JSON을 사용하고 json을 배열로 줄이기

위 내용은 PHP 기반의 웹사이트 로그인 홈페이지 이미지에 대한 인증코드 생성 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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