웹 사이트를 개발할 때 검증 코드 시스템은 악의적 인 등록 및 로봇 공격을 방지하는 중요한 수단입니다. PHP에는 강력한 GD 라이브러리가 내장되어있어 사용자 정의 이미지 확인 코드를 쉽게 만들 수 있습니다. 그중에서도 ImageFontWidth 함수는 문자 너비를 동적으로 계산하여 검증 코드 이미지의 적응 폭 디자인을 실현하여 검증 코드가 더 아름답고 합리적입니다.
이 기사는 PHP의 ImageFontWidth 함수를 사용하여 적응성 폭 이미지 확인 코드 시스템을 구현하는 방법을 자세히 설명합니다.
ImageFontWidth 는 PHP GD 라이브러리에서 내장 글꼴로 단일 문자의 너비 (단위 : 픽셀)를 반환하는 함수입니다. 기본 사용량은 다음과 같습니다.
imagefontwidth(int $font): int
매개 변수 $ font는 1에서 5까지의 글꼴 크기를 나타내는 정수입니다.
이 기능은 종종 ImageFonTeight 와 함께 사용하여 문자가 차지하는 공간을 정확하게 계산합니다.
적응 폭이있는 검증 코드 사진을 만들려면 주요 단계는 다음과 같습니다.
검증 코드 문자열 생성 (일반적으로 임의의 문자와 숫자의 조합)
검증 코드 <br>의 총 폭을 계산하십시오 ImageFontWidth를 사용하여 단일 문자의 너비를 얻고 문자 수를 곱한 다음 전체 확인 코드의 필요한 폭을 얻습니다.
너비 <br>에 따라 캔버스를 만듭니다 imageCreateTrueColor를 사용하여 지정된 너비와 높이의 이미지를 만듭니다.
검증 코드 문자 <br> 왼쪽에서 오른쪽으로 배열 된 순서대로 사진에 문자를 작성하십시오.
사진을 출력하고 자원을 파괴합니다
다음은 ImageFontWidth를 기반으로 적응성 폭 확인 코드를 구현하는 방법을 보여주는 전체 샘플 코드입니다.
<?php
// 무작위 검증 코드 문자열을 생성합니다
function generateCaptchaCode($length = 5) {
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // 혼란스러운 캐릭터를 피하십시오
$code = '';
for ($i = 0; $i < $length; $i++) {
$code .= $chars[random_int(0, strlen($chars) - 1)];
}
return $code;
}
// 기본 함수는 검증 코드 사진을 생성합니다
function createCaptchaImage($code) {
$font = 5; // 내장 글꼴 크기를 사용하십시오5
$charWidth = imagefontwidth($font);
$charHeight = imagefontheight($font);
$padding = 10; // 왼쪽 및 왼쪽 여백
// 이미지 너비와 높이를 계산합니다
$width = $charWidth * strlen($code) + $padding * 2;
$height = $charHeight + $padding * 2;
// 이미지 리소스를 만듭니다
$image = imagecreatetruecolor($width, $height);
// 색상을 정의하십시오
$bgColor = imagecolorallocate($image, 255, 255, 255); // 흰색 배경
$textColor = imagecolorallocate($image, 0, 0, 0); // 검은 텍스트
$noiseColor = imagecolorallocate($image, 100, 120, 180); // 소음 색상
// 배경을 채우십시오
imagefilledrectangle($image, 0, 0, $width, $height, $bgColor);
// 간섭 소음을 추가하십시오
for ($i = 0; $i < 50; $i++) {
imagesetpixel($image, random_int(0, $width), random_int(0, $height), $noiseColor);
}
// 문자별로 확인 코드 텍스트를 그립니다
$x = $padding;
$y = $padding;
for ($i = 0; $i < strlen($code); $i++) {
imagestring($image, $font, $x, $y, $code[$i], $textColor);
$x += $charWidth;
}
// 출력 사진 헤더
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
}
// 검증 코드 문자열을 생성합니다
$captchaCode = generateCaptchaCode(6);
// 출력 검증 코드 사진
createCaptchaImage($captchaCode);
?>
적응 폭 : 코드는 ImageFontWidth를 통해 단일 문자의 너비를 동적으로 계산하고, 검증 코드 문자 수를 곱한 다음 여백을 추가하여 확인 코드 이미지의 너비가 콘텐츠 길이에 따라 자동으로 조정됩니다.
글꼴 크기 :이 예제는 GD 내장 글꼴 5를 사용합니다. 더 나은 시각적 효과가 필요한 경우 imageTtfText를 사용하여 트루 타입 글꼴을로드 할 수 있지만 문자 너비 계산을 추가로 처리해야합니다.
보안 : 확인 코드를 생성 한 후에는 확인 코드 문자열이 양식을 제출할 때 확인을 위해 세션에 저장할 수 있습니다.
미화 : 더 많은 노이즈와 곡선을 추가하거나 글꼴 색상을 변경하여 검증 코드의 방지 능력을 향상시킬 수 있습니다.
PHP의 ImageFontWidth 함수를 통해 단일 문자의 너비를 정확하게 얻고 검증 코드 이미지의 너비의 동적 조정을 실현할 수 있습니다. 이 방법은 간단하고 효율적이며 기본 적응성 폭 이미지 검증 코드를 생성하는 데 적합합니다.
보다 복잡한 검증 코드 효과가 필요한 경우 다른 GD 드로잉 기능을 결합하거나 타사 검증 코드 라이브러리를 사용할 수 있습니다.