Heim >Backend-Entwicklung >PHP-Tutorial >Erstellen Sie ein benutzerdefiniertes CAPTCHA- und Kontaktformular in PHP
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.
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
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
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!