Heim >Backend-Entwicklung >PHP-Tutorial >Erstellen Sie ein benutzerdefiniertes CAPTCHA- und Kontaktformular in PHP

Erstellen Sie ein benutzerdefiniertes CAPTCHA- und Kontaktformular in PHP

William Shakespeare
William ShakespeareOriginal
2025-03-14 11:06:10117Durchsuche

Dieses ursprünglich vor 10 Jahren veröffentlichte Tutorial wurde vollständig mit modernem Code für die Generierung von zufälligen Captchas aktualisiert. Viele Kommentare im Diskussionsthread beziehen sich auf den veralteten Code.

Die Automatisierung von Prozessen ist ein wesentlicher Vorteil von Codierung und Nutzung der Geschwindigkeit und Genauigkeit von Computern. Diese Kraft kann jedoch für böswillige Aktivitäten wie Spam oder Passwort -Cracking missbraucht werden. Dieses Tutorial konzentriert sich auf Anti-Spam-Techniken.

Betrachten Sie eine Website mit einem Kontaktformular. Obwohl es für legitime Benutzer bequem ist, ist es anfällig für automatisierte Spam -Einreichungen. Bots können Kontaktformulare, Foren oder Kommentare mit Spam -Links überfluten.

Die Lösung? Ein Test, der Bots vom Menschen unterscheidet: ein Captcha, das in eine PHP -Form integriert ist. Traditionelle Captchas präsentieren verzerrten Text in einem Bild; Menschen können es lesen, aber Bots können es normalerweise nicht. Dies überprüft die Benutzereingabe gegen den ursprünglichen Captcha -Text. Captcha steht für "vollständig automatisierte öffentliche Turing -Test, um Computern und Menschen auseinander zu sagen".

Dieses Tutorial zeigt, dass das Erstellen und Integrieren eines Captcha in ein Kontaktformular erstellt und integriert wird.

Erstellen einer Captcha

Wir werden die PHP GD -Bibliothek verwenden. Frühere Tutorials decken den Text- und Formzeichnungsfunktionen von GD ab. Wir werden auch eine zufällige Zeichenfolge für die Captcha generieren.

Erzeugen einer zufälligen Zeichenfolge

Dieser Code liegt in captcha.php . Die Funktion generate_string() erstellt die zufällige Zeichenfolge. Das Original generate_string() wurde durch den sichereren random_int() ersetzt.

  Php

$ alterted_chars = 'abcdefghijklmnopqrstuvwxyz';

Funktion generate_string ($ input, $ strength = 5) {
    $ input_length = strlen ($ input);
    $ random_string = '';
    für ($ i = 0; $ i 

Erstellen des Captcha -Hintergrunds

Als nächstes erzeugen wir den Captcha Image -Hintergrund (200x50 Pixel) unter Verwendung von fünf unterschiedlichen Farben.

  Php

$ image = ImageCrreatTueColor (200, 50);
Imagesantialias ($ image, true);

$ colors = [];

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

für ($ i = 0; $ i 

Random $red , $green und $blue bestimmen die Grundfarbe. Eine Schleife erzeugt dunklere Farbtöne, die im $colors -Array gespeichert sind. Die hellste Farbe füllt den Hintergrund, und nachfolgende Rechtecke verleihen Komplexität.

Beispiel Captcha Hintergrundbild

Rendern der CAPTCHA -Saite

Schließlich zeichnen wir die zufällige Zeichenfolge auf den Hintergrund. Buchstabenfarbe, Y-Koordinate und Rotation werden für zusätzliche Schwierigkeit randomisiert.

  Php

$ schwarz = imageColoralloclocation ($ image, 0, 0, 0);
$ white = imageblyColoralloclocation ($ image, 255, 255, 255);
$ textColors = [$ schwarz, $ white];

$ fonts = [DirName (__ Datei __). '\ fonts \ acme.ttf', DirName (__ Datei __). '\ fonts \ ubuntu.ttf', DirName (__ Datei __). DirName (__ Datei __). '\ fonts \ PlayfairDisplay.ttf'];

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

für ($ i = 0; $ i 

Heruntergeladene Schriftarten bieten Zeichenschwankungen. Polsterung (15 Pixel) wird hinzugefügt, und der verbleibende Raum wird gleichmäßig auf die Charaktere aufgeteilt.

Beispiel Captcha Bild (Hintergrund und Text)

Integration des Captcha in das Kontaktformular

Lassen Sie uns nun den Captcha in das Kontaktformular integrieren (vorausgesetzt, Sie haben ein bereits bestehendes Kontaktformular). Wir werden Sitzungen verwenden, um den Captcha -Text zu speichern und zu validieren.

Der vollständige captcha.php -Code:

  Php
Session_Start ();

$ alterted_chars = 'abcdefghjklmnpqrstuvwxyz';

Funktion generate_string ($ input, $ strength = 10) {
    $ input_length = strlen ($ input);
    $ random_string = '';
    für ($ i = 0; $ i 

Fügen Sie diese HTML über die Schaltfläche "Nachricht senden" in Ihrem Kontaktformular hinzu:

<div class="elem-group">
    <label for="captcha">Bitte geben Sie den Captcha -Text ein</label>
    <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/" class="lazy" alt="Erstellen Sie ein benutzerdefiniertes CAPTCHA- und Kontaktformular in PHP">
    <i class="fas fa-redo refresh-captcha"></i>
</div>

Fügen Sie dieses JavaScript hinzu, damit die Captcha erfrischt:

 var refreshbutton = document.querySelector (". Refresh-Captcha");
refreshbutton.onclick = function () {
  document.querySelector (". Captcha-Image"). Src = 'captcha.php?' Datum.Now ();
};

Beispielkontaktformular mit Captcha

Aktualisieren Sie schließlich Ihr Kontaktformularverarbeitungsskript ( contact.php ), um die Captcha zu validieren:

  Php
Session_Start ();

if ($ _ post) {
    // ... (Ihr vorhandener Formularverarbeitungscode) ...

    if (isset ($ _ post ['captcha_challenge']) && $ _post ['captcha_challenge'] == $ _Session ['captcha_text']) {
        // ... (verarbeiten die Formulareingabe) ...
    } anders {
        echo '<p> Sie haben eine falsche Captcha eingegeben.</p> ';
    }
} anders {
    echo '<p> Etwas lief schief</p> ';
}

?>

Dies überprüft, ob die Eingabe des Benutzers mit dem von Sitzungen gespeicherten Captcha-Text übereinstimmt.

Abschluss

Dieses Tutorial hat ein benutzerdefiniertes PHP CAPTCHA erstellt und es in ein Kontaktformular integriert, wodurch die Sicherheits- und Benutzererfahrung mit einer Aktualisierungsschaltfläche verbessert wird. Sie können dies an verschiedene Captcha -Methoden wie mathematische Probleme anpassen. Für fortgeschrittenere Funktionen sollten Sie Plugins von Codecanyon verwenden.

Das obige ist der detaillierte Inhalt vonErstellen Sie ein benutzerdefiniertes CAPTCHA- und Kontaktformular in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn