Einfache Captchas mit PHP und GD
Inzwischen haben wir alle Captcha -Bilder in Online -Formularen begegnet. Captchas ist ein notwendiges Übel, und dieser Artikel wird Ihnen beibringen, wie sie gemacht werden.
Bitte beachten Sie, dass es zwar bessere automatische Lösungen von Drittanbietern für Captchas gibt, wie z. Wir werden nicht erklären, was Captchas tatsächlich sind, da es als allgemein bekannt ist und an anderer Stelle bereits detaillierter behandelt wird.
Key Takeaways
- Die GD -Bibliothek (Graphics Draw) in PHP kann verwendet werden, um Captcha -Bilder zu erstellen, die typischerweise aus Form, Verzerrung und Text bestehen.
- Der Captcha -Erstellungsprozess beinhaltet die Anzeige eines leeren Bildes, das Erstellen einer Form, das Erzeugen von zufälligen Zeilen und Punkten und das Erzeugen von zufälligen Text.
- Der Captcha -Validierungsprozess beinhaltet den Vergleich der Eingabe des Benutzers mit der in einer Sitzungsvariablen gespeicherten Captcha -Zeichenfolge. Wenn die Eingabe mit der Captcha -Zeichenfolge übereinstimmt, gilt die Antwort des Benutzers als korrekt.
- Um sicherzustellen, dass das Captcha-Bild immer aktualisiert und nicht aus dem Browser-Cache abgerufen wird, können einzigartige Namen den Bildern mit der integrierten Zeit () in Php. zugeordnet werden
- Während dieses Tutorial zeigt, wie ein einfaches Captcha erstellt wird, wird empfohlen, sicherere und zugängliche Lösungen von Drittanbietern wie Recaptcha für Produktionsanwendungen zu verwenden.
Zeichnen captchas
Sie müssen die GD -Bibliothek (Graphics Draw) vor dem Fortfahren installiert haben. Diese Bibliothek ermöglicht das Zeichnen von Grafiken und Bildern durch integrierte PHP-Funktionen. Um es zu installieren, führen Sie sudo apt-Get-Installieren Sie PHP5-GD aus oder befolgen Sie die Anweisungen.
Captchas bestehen normalerweise aus 3 Dingen - Form, Verzerrung und Text.
Wir werden die unten genannten Schritte befolgen:
- Zeigen Sie ein leeres Bild im Browser an.
- Erstellen Sie eine Form.
- erzeugen zufällige Zeilen.
- erzeugen zufällige Punkte.
- zufälligen Text erzeugen.
Zeigen Sie ein leeres Bild an
Das Bild wird von HTML so behandelt, als würde ein externes Bild mit dem Tag „IMG“ angezeigt. Es werden zwei Funktionen verwendet - eine zum Erstellen des Bildes und eines zum Anzeigen.
<span><span><?php </span></span><span><span>session_start(); </span></span><span><span>?></span> </span> <span><span><span><title</span>></span>demo.php<span><span></title</span>></span> </span> <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span> </span> <span><span><?php </span></span><span> <span>create_image(); </span></span><span> <span>display(); </span></span><span> <span>/***** definition of functions *****/ </span></span><span> <span>function display() </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span> </span> <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span> </span> <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span> </span> <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span> </span> <span><span><span><img</span> src<span>="image.png"</span>></span> </span> <span><span><span></div</span>></span> </span> //div1 ends <span><span><span></div</span>></span> //div2 ends </span> <span><span><?php </span></span><span> <span>} </span></span><span> </span><span> <span>function create_image() </span></span><span> <span>{ </span></span><span> <span>$image = imagecreatetruecolor(200, 50); </span></span><span> <span>imagepng($image, "image.png"); </span></span><span> <span>} </span></span><span> </span><span> <span>?></span> </span> <span><span><span></body</span>></span> </span><span><span><?php </span></span><span><span>?></span></span>
Die Funktion display () hat nichts anderes als einen normalen HTML -Code, der ein Bild im Browser anzeigt. Davon abgesehen wird nur ein Styling durchgeführt, damit die Ausgabe präsentierbar aussieht.
In der Funktion create_image () wird eine Variable verwendet, um das von der ImageCrreatReEcolor () -Funktion zurückgegebene Bild zu verweisen, das die Breite und Länge des Bildes als Argumente nimmt. ImagePng () erstellt ein PNG -Bild des angegebenen Namens und Pfades (im selben Verzeichnis).
Ein schwarzes Bild ist die Ausgabe nach unserem ersten Schritt.
Beachten Sie, dass das Funktionsbildpng () die letzte Zeile unserer Funktion ist und alle folgenden Schritte nur vor diesem Funktionsaufruf in die Funktion create_image () eingefügt werden sollen, sonst würden sie nicht wirksam werden.
Erstellen Sie eine Form
Jede Form kann für die Captcha ausgewählt werden. Wir wählen ein Rechteck mit der von Funktionsage gefüllten Funktion () aus. Es dauert fünf Argumente-Bildreferenz, Start X-Pos, Start von Y-Pos, Ende X-Pos, enden Y-Pos und die Hintergrundfarbe. Sie können die entsprechende Funktion für eine Ellipse zur Erzeugung von elliptischen Captcha verwenden.
Die Funktion von ImageColorAlleCocce () verteilt eine Farbe einer Variablen, da sie die RGB -Kombination der Farbe als Argumente nimmt. Der folgende Code ist in der Funktion create () hinzugefügt.
<span><span><?php </span></span><span><span>session_start(); </span></span><span><span>?></span> </span> <span><span><span><title</span>></span>demo.php<span><span></title</span>></span> </span> <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span> </span> <span><span><?php </span></span><span> <span>create_image(); </span></span><span> <span>display(); </span></span><span> <span>/***** definition of functions *****/ </span></span><span> <span>function display() </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span> </span> <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span> </span> <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span> </span> <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span> </span> <span><span><span><img</span> src<span>="image.png"</span>></span> </span> <span><span><span></div</span>></span> </span> //div1 ends <span><span><span></div</span>></span> //div2 ends </span> <span><span><?php </span></span><span> <span>} </span></span><span> </span><span> <span>function create_image() </span></span><span> <span>{ </span></span><span> <span>$image = imagecreatetruecolor(200, 50); </span></span><span> <span>imagepng($image, "image.png"); </span></span><span> <span>} </span></span><span> </span><span> <span>?></span> </span> <span><span><span></body</span>></span> </span><span><span><?php </span></span><span><span>?></span></span>
Das vorherige Bild ist nach diesem Schritt weiß.
erzeugen zufällige Zeilen.
Jetzt beginnen wir tatsächlich damit, den Verzerrungsteil des Captcha zu machen. In PHP werden die Linien vom Startpunkt (x1, y1) bis zum Endpunkt (x2, y2) erzeugt. Wenn wir möchten, dass unsere Linien beide Enden der Box berühren, werden wir die Koordinaten
<span>$background_color = imagecolorallocate($image, 255, 255, 255); </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>
Die Funktion "ImageLine () nimmt in dieser Reihenfolge die Koordinaten X1, X2, Y1, Y2 als Argumente ab, abgesehen von der Bildreferenz und Farbe der Linie. Die Linienfarbe wurde genauso zugewiesen, als die Hintergrundfarbe im vorherigen Schritt zugewiesen wurde.
Das y-Koordinate wird als Rand ()*P angegeben, da dies die Höhe unserer Box ist und immer einen Wert unter 50 zurückgibt. Sie können alternativ Rand (0,50) verwenden. Sie ergeben den gleichen Ausgangsbereich.
erzeugen zufällige Punkte.
zufällige Punkte werden genauso generiert wie zufällige Zeilen. Die verwendete Funktion ist Imagesetpixel (). Diese Funktion nimmt den Wert der Koordinaten auf, bei denen der Punkt in die Box platziert wird.
<span>$line_color = imagecolorallocate($image, 64,64,64); </span><span>for($i=0;$i<10;$i++) { </span> <span>imageline($image,0,rand()%50,200,rand()%50,$line_color); </span><span>}</span>
Das X-Koordinate wird zufällig mit Rand ()* 0 generiert, da dies die Breite unserer Box ist und dies immer einen Wert unter 200 zurückgibt. Sie können alternativ Rand (0.200) verwenden. Sie ergeben den gleichen Ausgangsbereich. Die Y -Koordinate wird wie in den Zeilen Schritt erzeugt.
Generieren Sie zufälligen Text
Wir verweisen zufällig auf eine Position in der Zeichenfolge (die das Alphabet sowohl im unteren als auch im oberen Fall enthält) und weisen die Variable $ bild
zu<span><span><?php </span></span><span><span>session_start(); </span></span><span><span>?></span> </span> <span><span><span><title</span>></span>demo.php<span><span></title</span>></span> </span> <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span> </span> <span><span><?php </span></span><span> <span>create_image(); </span></span><span> <span>display(); </span></span><span> <span>/***** definition of functions *****/ </span></span><span> <span>function display() </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span> </span> <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span> </span> <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span> </span> <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span> </span> <span><span><span><img</span> src<span>="image.png"</span>></span> </span> <span><span><span></div</span>></span> </span> //div1 ends <span><span><span></div</span>></span> //div2 ends </span> <span><span><?php </span></span><span> <span>} </span></span><span> </span><span> <span>function create_image() </span></span><span> <span>{ </span></span><span> <span>$image = imagecreatetruecolor(200, 50); </span></span><span> <span>imagepng($image, "image.png"); </span></span><span> <span>} </span></span><span> </span><span> <span>?></span> </span> <span><span><span></body</span>></span> </span><span><span><?php </span></span><span><span>?></span></span>
Wenn es in eine Schleife gelegt wird, sieht es so aus-
<span>$background_color = imagecolorallocate($image, 255, 255, 255); </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>
Wir werden die Zeilen
erklären<span>$line_color = imagecolorallocate($image, 64,64,64); </span><span>for($i=0;$i<10;$i++) { </span> <span>imageline($image,0,rand()%50,200,rand()%50,$line_color); </span><span>}</span>
im nächsten Abschnitt.
Die Funktion Imagestring () schreibt den Text in unserem Bild. Es hat 6 Argumente:
- Bildreferenz.
- Schriftgröße des Textes (es kann höchstens 5 sein).
- x-Koordinate (sich proportional für jedes Alphabet verändern).
- y-koordinate (hielt gleich, obwohl wir dies auch zufällig ändern konnten).
- tatsächliche Zeichenfolge zu schreiben.
- Schriftfarbe des Textes.
Sie können auch den Funktionsfunktionsettftext () verwenden, wenn Sie eine größere Schriftart und einen anderen Schriftart -Stil haben möchten. Es braucht 2 zusätzliche Argumente für den Winkel- und Schriftstil des Textes.
Berechnung der X-Koordinaten erfolgt durch Inspektion. Ungefähr 35 Pixel (5 ($ I*30)) sind die Buchstaben, wobei $ i = 0,1,2,3,4,5,6 $ i = 0,1,2,3,4,5,6 ist. Dies liegt daran, dass wenn wir diesen Wert etwa 15-20px gehalten hätten, es eine Möglichkeit gegeben hätte, dass sich zwei Buchstaben überlappten. Wenn der Wert mehr als 40px gewesen wäre, hätten die Buchstaben insgesamt nicht in die Box gepasst.
Dies erzeugt einen 6 Alphabet Captcha -Text. Wir können immer mehr Zufälligkeit schaffen, indem wir die Aspekte ändern, die aufgrund der Einfachheit, wie Farbe, Y-Koordinaten usw. konstant gehalten wurden
Die letzte Captcha sieht so aus
Mehr Zufälligkeit kann erreicht werden, indem Designs mit den Pixeln erstellt oder die Farbe oder Größe geändert werden.
hier wird die Antwort des Benutzers erstellt und nach der Verarbeitung erhält er/sie eine Antwort. Zunächst wird ein einfaches Formular mit einem Eingabetialbox und einer Senden -Schaltfläche erstellt. Es kann viele Möglichkeiten geben, eine CAPTCHA gemäß den Anforderungen komplexer Webanwendungen zu verarbeiten. Wenn wir es jedoch für dieses Beispiel einfach halten, werden wir es auf derselben Seite verarbeiten.
Die beiden Zeilen, die in den vorherigen Code -Snippets ungeklärt sind, kommen jetzt ins Spiel:
- $ word. = $ Bild; - Der Verkettungsoperator. wird verwendet, um alle einzelnen Buchstaben nacheinander anzuhängen und das 6-Buchstaben-Wort zu generieren.
- $ _ Session ['captcha_string'] = $ Word; Unsere Captcha -Zeichenfolge wird in einer Sitzungsvariablen gespeichert, die für Validierungszwecke verwendet wird.
Es werden zwei Einreichungsschaltflächen verwendet, eine zum Senden der Zeichenfolge und eine andere, um die Seite zu aktualisieren.
Die folgenden Zeilen werden zwischen den beiden Abschluss -Div -Tags hinzugefügt (siehe Kommentare in der vorherigen Anzeige ())
<span><span><?php </span></span><span><span>session_start(); </span></span><span><span>?></span> </span> <span><span><span><title</span>></span>demo.php<span><span></title</span>></span> </span> <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span> </span> <span><span><?php </span></span><span> <span>create_image(); </span></span><span> <span>display(); </span></span><span> <span>/***** definition of functions *****/ </span></span><span> <span>function display() </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span> </span> <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span> </span> <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span> </span> <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span> </span> <span><span><span><img</span> src<span>="image.png"</span>></span> </span> <span><span><span></div</span>></span> </span> //div1 ends <span><span><span></div</span>></span> //div2 ends </span> <span><span><?php </span></span><span> <span>} </span></span><span> </span><span> <span>function create_image() </span></span><span> <span>{ </span></span><span> <span>$image = imagecreatetruecolor(200, 50); </span></span><span> <span>imagepng($image, "image.png"); </span></span><span> <span>} </span></span><span> </span><span> <span>?></span> </span> <span><span><span></body</span>></span> </span><span><span><?php </span></span><span><span>?></span></span>
Bevor Sie sich weiter bewegen, müssen wir wissen, wann wir angezeigt werden müssen und wann das Eingabefeld nicht angezeigt werden soll. Es wird nur
angezeigt- Wenn die Seite gerade geladen ist.
- Wenn die Antwort des Benutzers falsch war.
Die erste Bedingung wird durch die Verwendung eines $ -Flags erfüllt, das bei jedem Klicken auf "1" auf "1" eingestellt ist. Anfangs wurde es auf einen anderen Wert eingestellt. Die zweite Bedingung wird erreicht, indem überprüft wird, ob der in unserer Sitzungsvariablen gespeicherte Wert mit der Benutzereingabe übereinstimmt (siehe Code unten).
Um dies zu erreichen, werden wir die folgenden Zeilen unseres Startschritts zu Beginn des Artikels ersetzen:
<span>$background_color = imagecolorallocate($image, 255, 255, 255); </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>
mit:
<span>$line_color = imagecolorallocate($image, 64,64,64); </span><span>for($i=0;$i<10;$i++) { </span> <span>imageline($image,0,rand()%50,200,rand()%50,$line_color); </span><span>}</span>
Beachten Sie, dass die Funktionen create_image () und display () nur gemäß den 2 oben diskutierten Bedingungen aufgerufen werden.
Wir benötigen die Sitzungsvariable von der vorherigen Seite, sodass die Sitzung hier nicht zerstört wird. Die Sitzung wird automatisch zerstört, sobald das Browserfenster geschlossen ist.
Die Captcha sieht so aus-
Wenn die Eingabe falsch ist, wird der Benutzer erneut aufgefordert.
Wenn die Eingabe korrekt ist, wird der Benutzer eine Nachricht angezeigt.
Es gibt eine geringfügige Einschränkung - Wenn der Benutzer die Rücktaste zurückdrückt, wird jedes im Cache des Browsers vorhandene Bild nicht neu geladen, während die Seite dies tut. In einer Postanforderung wird die Browser -Back -Schaltfläche eine Seite "Dokument abgelaufen" angezeigt. Wenn die Anfrage jedoch abgerufen wird, wird das Bild nicht regeneriert.
Die Lösung ist einfach - jedes Mal eindeutige Namen von Bildern zu erstellen, damit der Browser sie nicht im Cache findet. Wir werden eine eindeutige Zeichenfolge anhängen, die uns durch die integrierte Time () -Funktion zum Bildnamen beim Erstellen und Anzeigen im Browser an uns zurückgegeben wird.
Fügen Sie diese Zeile direkt unten hinzu, wo Sie Ihre Sitzung gestartet haben:
<span>$pixel_color = imagecolorallocate($image, 0,0,255); </span><span>for($i=0;$i<1000;$i++) { </span> <span>imagesetpixel($image,rand()%200,rand()%50,$pixel_color); </span><span>} </span>
Ersetzen Sie das IMG SRC -Tag in der Funktion display () durch
<span>$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; </span><span>$len = strlen($letters); </span><span>$letter = $letters[rand(0, $len-1)]; </span> <span>$text_color = imagecolorallocate($image, 0,0,0);</span>
und der Teil, in dem wir das PNG -Bild in create_image () erstellt haben, werden ebenfalls durch
ersetzt<span>for ($i = 0; $i< 6;$i++) { </span> <span>$letter = $letters[rand(0, $len-1)]; </span> <span>imagestring($image, 5, 5+($i*30), 20, $letter, $text_color); </span> <span>$word.=$letter; </span><span>} </span><span>$_SESSION['captcha_string'] = $word;</span>
Die Bilder werden nun so etwas wie Image39342015 genannt. In diesem Verfahren werden Bilder so oft erstellt, wie die Seite aktualisiert wird, wodurch große Mengen an Speicherplatz verschwenden können. Daher werden wir sicherstellen, dass alle anderen Bilder der PNG -Erweiterung vor dem Erstellen eines Bildes gelöscht werden. Fügen Sie Folgendes hinzu, kurz bevor die Funktion von ImagePng () aufgerufen wird.
<span>$word.=$letter; </span><span>$_SESSION['captcha_string'] = $word; </span>
In einer Produktions -App stellen Sie einfach sicher, dass Sie den Ordner isolieren, in dem CAPTCHA -Bilder gespeichert werden, andere nützliche Bilder werden möglicherweise ebenfalls gelöscht.
Laden Sie den vollständigen Code hier herunter.
Schlussfolgerung
Es ist sehr einfach, verschiedene Arten von Captchas in PHP zu erstellen. Dieser Artikel behandelte die drei grundlegenden Dinge, die zum Erstellen eines Standard -Captcha - Form, Verzerrung und Text - verwendet wurden. Dieser Artikel war ein Beweis für das Konzept, und der hier vorgestellte Code sollte nicht in der Produktion verwendet werden - zumal exzellente Alternativen wie Recaptcha existieren, was auch die Tonausgabe unterstützt, um Menschen mit Hörbehinderungen zu helfen. Wir hoffen, Sie haben diesen Artikel interessant gefunden. Hinterlassen Sie Ihre Kommentare und Feedback unten!
häufig gestellte Fragen (FAQs) zu einfachen Captchas mit PHP GD
Wie kann ich das Erscheinungsbild meines Captcha anpassen? Sie können die Schriftart, Farbe, Größe und sogar den Hintergrund der Captcha ändern. Um die Schriftart zu ändern, können Sie beispielsweise die Funktion imageettftext () verwenden und die Schriftart Datei in den Parametern angeben. Um die Farbe zu ändern, können Sie die Funktion "ImageColOralLaCate () verwenden und die RGB -Werte für die gewünschte Farbe angeben. Denken Sie daran, dass Ihre Captcha nicht nur ästhetischer, sondern auch sicherer gegen Bots ist.
Wie kann ich meine Captcha sicherer machen? Eine Möglichkeit besteht darin, eine Mischung aus alphanumerischen Zeichen, sowohl den oberen als auch den unteren Gehäuse, zu verwenden. Dies erhöht die Anzahl der möglichen Kombinationen und macht es Bots schwieriger zu erraten. Sie können auch die Länge der Captcha erhöhen. Eine andere Methode besteht darin, dem Captcha -Bild Rauschen wie Linien oder Punkte hinzuzufügen. Dies kann mit den Funktionen imageline () und imageSellipse () in php. Mehrere Gründe. Ein häufiger Grund ist, dass die GD -Bibliothek in Ihrer PHP -Installation nicht installiert oder aktiviert ist. Sie können dies durch die Funktion der Funktion_Exists ("GD_Info") überprüfen. Wenn es false zurückgibt, ist GD nicht aktiviert. Ein weiterer Grund könnten Fehler in Ihrem PHP -Code sein. Überprüfen Sie Ihre Fehlerprotokolle auf Hinweise. Sie müssten eine JavaScript -Funktion erstellen, die eine Anforderung an den Server sendet, um eine neue Captcha zu generieren. Der Server antwortet dann mit dem neuen Captcha -Bild, das dann auf der Webseite ohne vollständige Seite neu geladen wird.
Kann ich Captcha ohne GD -Bibliothek verwenden? Wenn Sie Captchas in PHP erstellen, ist dies nicht der einzige Weg. Sie können auch andere Bibliotheken wie Imagemagick verwenden oder sogar eine textbasierte Captcha erstellen. Diese Methoden bieten jedoch möglicherweise nicht die gleiche Sicherheits- und Anpassungsstufe wie die GD -Bibliothek.
Wie kann ich meinem Kontaktformular Captcha hinzufügen? In der HTML müssten Sie ein Bild -Tag für das Captcha und ein Eingabefeld hinzufügen, damit der Benutzer die Captcha eingeben kann. Im PHP müssten Sie die Captcha generieren und die Eingabe des Benutzers validieren.
Warum funktioniert meine Captcha -Validierung nicht? zu mehreren Gründen. Ein häufiger Grund ist, dass die Sitzungsvariablen nicht korrekt festgelegt oder abgerufen werden. Stellen Sie sicher, dass Session_Start () aufgerufen wird, bevor eine Ausgabe an den Browser gesendet wird und die Sitzungsvariablen korrekt verwendet werden. Ein weiterer Grund könnte sein, dass die Eingabe des Benutzers nicht korrekt mit dem Captcha verglichen wird. Stellen Sie sicher Beeinträchtigte Benutzer können eine Herausforderung sein, aber es gibt verschiedene Methoden. Eine Methode besteht darin, eine Audio -Captcha -Option bereitzustellen. Dies beinhaltet die Generierung einer Audiodatei mit den laut gesprochenen Captcha -Zeichen. Eine andere Methode ist die Verwendung eines alternativen fragbasierten Captcha, bei dem dem Benutzer eine einfache Frage gestellt wird, dass ein Bot Schwierigkeiten haben würde, zu beantworten. Sie sind so konzipiert, dass sie Bots verhindern, und sind nicht narrensicher. Erweiterte Bots können OCR (optische Charaktererkennung) verwenden, um die Captcha -Zeichen zu lesen. Indem Sie Ihr Captcha komplexer machen, z. B. eine Mischung aus Zeichen, das Hinzufügen von Geräuschen und das regelmäßige Ändern der Captcha, können Sie es Bots schwerer machen. ? Andere Methoden sind die Verwendung eines Honeypots, bei dem es sich um ein verstecktes Formularfeld handelt, das Bots ausfüllen wird, der Menschen jedoch nicht das Verhalten des Benutzers überprüft, z. Spam basierend auf einer Datenbank mit bekannter Spam.
Das obige ist der detaillierte Inhalt vonEinfache Captchas mit PHP und GD. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

Die Verwendung von Vorverarbeitungsanweisungen und PDO in PHP kann SQL -Injektionsangriffe effektiv verhindern. 1) Verwenden Sie PDO, um eine Verbindung zur Datenbank herzustellen und den Fehlermodus festzulegen. 2) Erstellen Sie Vorverarbeitungsanweisungen über die Vorbereitungsmethode und übergeben Sie Daten mit Platzhaltern und führen Sie Methoden aus. 3) Abfrageergebnisse verarbeiten und die Sicherheit und Leistung des Codes sicherstellen.

PHP verwendet MySQLI- und PDO-Erweiterungen, um in Datenbankvorgängen und serverseitiger Logikverarbeitung zu interagieren und die serverseitige Logik durch Funktionen wie Sitzungsverwaltung zu verarbeiten. 1) Verwenden Sie MySQLI oder PDO, um eine Verbindung zur Datenbank herzustellen und SQL -Abfragen auszuführen. 2) Behandeln Sie HTTP -Anforderungen und Benutzerstatus über Sitzungsverwaltung und andere Funktionen. 3) Verwenden Sie Transaktionen, um die Atomizität von Datenbankvorgängen sicherzustellen. 4) Verhindern Sie die SQL -Injektion, verwenden Sie Ausnahmebehandlung und Schließen von Verbindungen zum Debuggen. 5) Optimieren Sie die Leistung durch Indexierung und Cache, schreiben Sie hochlesbarer Code und führen Sie die Fehlerbehandlung durch.

PHP wird verwendet, um dynamische Websites zu erstellen. Zu den Kernfunktionen gehören: 1. Dynamische Inhalte generieren und Webseiten in Echtzeit generieren, indem Sie eine Verbindung mit der Datenbank herstellen; 2. Verarbeiten Sie Benutzerinteraktions- und Formulareinreichungen, überprüfen Sie Eingaben und reagieren Sie auf Operationen. 3. Verwalten Sie Sitzungen und Benutzerauthentifizierung, um eine personalisierte Erfahrung zu bieten. 4. Optimieren Sie die Leistung und befolgen Sie die Best Practices, um die Effizienz und Sicherheit der Website zu verbessern.

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.
