> 백엔드 개발 > PHP 튜토리얼 > PHP에서 사용자 정의 캡처 및 연락처 양식을 만듭니다

PHP에서 사용자 정의 캡처 및 연락처 양식을 만듭니다

William Shakespeare
풀어 주다: 2025-03-14 11:06:10
원래의
118명이 탐색했습니다.

원래 10 년 전에 출판 된이 튜토리얼은 임의의 캡처 생성을위한 최신 코드로 완전히 업데이트되었습니다. 토론 스레드의 많은 의견은 구식 코드를 나타냅니다.

프로세스 자동화는 컴퓨터의 속도와 정확도를 활용하여 코딩의 주요 이점입니다. 그러나이 힘은 스팸 또는 비밀번호 크래킹과 같은 악의적 인 활동에 오용 될 수 있습니다. 이 튜토리얼은 스팸 방지 기술에 중점을 둡니다.

연락처 양식이있는 웹 사이트를 고려하십시오. 합법적 인 사용자에게는 편리하지만 자동화 된 스팸 제출에 취약합니다. 봇은 스팸 링크가있는 연락처 양식, 포럼 또는 댓글 섹션을 침수 할 수 있습니다.

솔루션? 인간과 봇을 구별하는 시험 : PHP 형태와 통합 된 보안관. 전통적인 보안 문자는 이미지 내에서 왜곡 된 텍스트를 제시합니다. 인간은 그것을 읽을 수 있지만 봇은 일반적으로 할 수 없습니다. 원래 보판 텍스트에 대한 사용자 입력을 확인합니다. Captcha는 "컴퓨터와 인간에게 차별화하기 위해 완전히 자동화 된 공공 튜링 테스트"를 나타냅니다.

이 튜토리얼은 보안관을 연락처 양식으로 작성하고 통합하는 것을 보여줍니다.

보안 문자 만들기

PHP GD 라이브러리를 사용하겠습니다. 이전 자습서는 GD의 텍스트 및 모양 드로잉 기능을 다룹니다. 우리는 또한 보안 문자열에 대한 임의의 문자열을 생성합니다.

임의의 문자열을 생성합니다

이 코드는 captcha.php 에 있습니다. generate_string() 함수는 임의 문자열을 만듭니다. 원래 generate_string() 함수는보다 안전한 random_int() 로 대체되었습니다.

  php

$ permitted_chars = 'abcdefghijklmnopqrstuvwxyz';

함수 generate_string ($ input, $ thinge = 5) {
    $ input_length = strlen ($ input);
    $ random_string = '';
    for ($ i = 0; $ i 
로그인 후 복사

보안 문자 배경 생성

다음으로 5 가지 다양한 색상을 사용하여 Captcha 이미지 배경 (200x50 픽셀)을 생성합니다.

  php

$ image = imageCreatetRuecolor (200, 50);
imageAntialias ($ image, true);

$ colors = [];

$ red = rand (125, 175);
$ green = rand (125, 175);
$ blue = rand (125, 175);

for ($ i = 0; $ i 
로그인 후 복사

임의의 $red , $green$blue 값은 기본 색상을 결정합니다. 루프는 $colors 배열에 저장된 어두운 색조를 생성합니다. 가장 가벼운 색상은 배경을 채우고 후속 직사각형은 복잡성을 더합니다.

CARTCHA 배경 이미지 예제

보안 문자열 렌더링

마지막으로, 우리는 임의의 문자열을 백그라운드에 그립니다. 문자 색상, y 좌표 및 회전은 추가 난이도로 무작위로 표시됩니다.

  php

$ black = imageColorAllother ($ image, 0, 0, 0);
$ white = imageColorAllother ($ image, 255, 255, 255);
$ textColors = [$ black, $ white];

$ fonts = [dirname (__ 파일 __). '\ fonts \ acme.ttf', dirname (__ file __). '\ fonts \ ubuntu.ttf', dirname (__ 파일 __). '\ fonts \ merriweather.ttf', dirname (__ 파일 __). '\ fonts \ playfairdisplay.ttf'];

$ string_length = 6;
$ captcha_string = generate_string ($ permitted_chars, $ string_length);

for ($ i = 0; $ i 
로그인 후 복사

다운로드 된 글꼴은 문자 변형을 제공합니다. 패딩 (15 픽셀)이 추가되고 나머지 공간은 문자로 골고루 나뉩니다.

CARTCHA 이미지 (배경 및 텍스트) 예제

보안관을 접점 양식에 통합합니다

이제 Captcha를 접점 양식으로 통합하겠습니다 (기존 연락처 양식이 있다고 가정). 우리는 세션을 사용하여 보안 문자 텍스트를 저장하고 검증합니다.

완전한 captcha.php 코드 :

  php
session_start ();

$ permitted_chars = 'abcdefghjklmnpqrstuvwxyz';

함수 generate_string ($ input, $ thinge = 10) {
    $ input_length = strlen ($ input);
    $ random_string = '';
    for ($ i = 0; $ i 
로그인 후 복사

연락처 양식에 "메시지 보내기"버튼 위에이 HTML을 추가하십시오.

<div class="elem-group">
    <label for="captcha">보안 문자 텍스트를 입력하십시오</label>
    <img src="/static/imghw/default1.png" data-src="https://img.php.cn/" class="lazy" alt="PHP에서 사용자 정의 캡처 및 연락처 양식을 만듭니다">
    <i class="fas fa-redo refresh-captcha"></i>
</div>
로그인 후 복사

이 JavaScript를 추가하여 보안 문자를 새로 고칠 수 있습니다.

 var refreshButton = docum
refreshButton.onClick = function () {
  document.querySelector ( ". Captcha-Image"). src = 'captcha.php?' 날짜 .now ();
};
로그인 후 복사

예제 보안 문자와의 연락처 양식

마지막으로, Captcha를 검증하려면 연락처 양식 처리 스크립트 ( contact.php )를 업데이트하십시오.

  php
session_start ();

if ($ _ post) {
    // ... (기존 양식 처리 코드) ...

    if (isset ($ _ post [ 'captcha_challenge']) && $ _post [ 'captcha_challenge'] == $ _session [ 'captcha_text'] {
        // ... (양식 제출을 처리) ...
    } 또 다른 {
        에코 '<p> 당신은 부정확 한 보판물에 들어갔다.</p> ';;
    }
} 또 다른 {
    에코 '<p> 뭔가 잘못되었습니다</p> ';;
}

?>
로그인 후 복사

사용자의 입력이 세션 저장된 보안 문자 텍스트와 일치하는지 확인합니다.

결론

이 튜토리얼은 사용자 정의 PHP 보안관을 만들어 연락처 양식으로 통합하여 새로 고침 버튼으로 보안 및 사용자 경험을 향상 시켰습니다. 수학 문제와 같은 다른 보안관 방법을 사용하도록이를 조정할 수 있습니다. 보다 고급 기능은 Codecanyon의 플러그인을 사용하는 것을 고려하십시오.

위 내용은 PHP에서 사용자 정의 캡처 및 연락처 양식을 만듭니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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