현재 위치: > 최신 기사 목록> PHP의 ImageFontWidth 기능을 사용하여 적응성 폭 이미지 확인 코드 시스템을 구현하는 방법은 무엇입니까?

PHP의 ImageFontWidth 기능을 사용하여 적응성 폭 이미지 확인 코드 시스템을 구현하는 방법은 무엇입니까?

M66 2025-07-10

웹 사이트를 개발할 때 검증 코드 시스템은 악의적 인 등록 및 로봇 공격을 방지하는 중요한 수단입니다. PHP에는 강력한 GD 라이브러리가 내장되어있어 사용자 정의 이미지 확인 코드를 쉽게 만들 수 있습니다. 그중에서도 ImageFontWidth 함수는 문자 너비를 동적으로 계산하여 검증 코드 이미지의 적응 폭 디자인을 실현하여 검증 코드가 더 아름답고 합리적입니다.

이 기사는 PHP의 ImageFontWidth 함수를 사용하여 적응성 폭 이미지 확인 코드 시스템을 구현하는 방법을 자세히 설명합니다.


1. ImageFontWidth 기능 소개

ImageFontWidth 는 PHP GD 라이브러리에서 내장 글꼴로 단일 문자의 너비 (단위 : 픽셀)를 반환하는 함수입니다. 기본 사용량은 다음과 같습니다.

 imagefontwidth(int $font): int

매개 변수 $ font는 1에서 5까지의 글꼴 크기를 나타내는 정수입니다.

이 기능은 종종 ImageFonTeight 와 함께 사용하여 문자가 차지하는 공간을 정확하게 계산합니다.


2. 디자인 아이디어

적응 폭이있는 검증 코드 사진을 만들려면 주요 단계는 다음과 같습니다.

  1. 검증 코드 문자열 생성 (일반적으로 임의의 문자와 숫자의 조합)

  2. 검증 코드 <br>의 총 폭을 계산하십시오 ImageFontWidth를 사용하여 단일 문자의 너비를 얻고 문자 수를 곱한 다음 전체 확인 코드의 필요한 폭을 얻습니다.

  3. 너비 <br>에 따라 캔버스를 만듭니다 imageCreateTrueColor를 사용하여 지정된 너비와 높이의 이미지를 만듭니다.

  4. 검증 코드 문자 <br> 왼쪽에서 오른쪽으로 배열 된 순서대로 사진에 문자를 작성하십시오.

  5. 사진을 출력하고 자원을 파괴합니다


3. 구현 예

다음은 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);
?>

4. 설명 및 확장

  • 적응 폭 : 코드는 ImageFontWidth를 통해 단일 문자의 너비를 동적으로 계산하고, 검증 코드 문자 수를 곱한 다음 여백을 추가하여 확인 코드 이미지의 너비가 콘텐츠 길이에 따라 자동으로 조정됩니다.

  • 글꼴 크기 :이 예제는 GD 내장 글꼴 5를 사용합니다. 더 나은 시각적 효과가 필요한 경우 imageTtfText를 사용하여 트루 타입 글꼴을로드 할 수 있지만 문자 너비 계산을 추가로 처리해야합니다.

  • 보안 : 확인 코드를 생성 한 후에는 확인 코드 문자열이 양식을 제출할 때 확인을 위해 세션에 저장할 수 있습니다.

  • 미화 : 더 많은 노이즈와 곡선을 추가하거나 글꼴 색상을 변경하여 검증 코드의 방지 능력을 향상시킬 수 있습니다.


5. 요약

PHP의 ImageFontWidth 함수를 통해 단일 문자의 너비를 정확하게 얻고 검증 코드 이미지의 너비의 동적 조정을 실현할 수 있습니다. 이 방법은 간단하고 효율적이며 기본 적응성 폭 이미지 검증 코드를 생성하는 데 적합합니다.

보다 복잡한 검증 코드 효과가 필요한 경우 다른 GD 드로잉 기능을 결합하거나 타사 검증 코드 라이브러리를 사용할 수 있습니다.