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 erste Zeile gibt den Beginn der Benutzersitzung auf unserer Seite an.
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

Undress AI Tool
Ausziehbilder kostenlos

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

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

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

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

Um Datei -Uploads in PHP sicher zu verarbeiten, besteht der Kern darin, Dateitypen zu überprüfen, Dateien umzubenennen und die Berechtigungen zu beschr?nken. 1. Verwenden Sie Finfo_File (), um den realen MIME -Typ zu überprüfen, und nur bestimmte Typen wie Bild/JPEG sind zul?ssig. 2. Verwenden Sie Uniqid (), um zuf?llige Dateinamen zu generieren und sie im Root-Verzeichnis ohne Web zu speichern. 3.. Begrenzen Sie die Dateigr??e durch Php.ini- und HTML -Formulare und setzen Sie die Verzeichnisberechtigungen auf 0755; 4. Verwenden Sie Clamav, um Malware zu scannen, um die Sicherheit zu verbessern. Diese Schritte verhindern effektiv Sicherheitslücken und stellen sicher, dass der Upload -Prozess des Datei -Uploads sicher und zuverl?ssig ist.

In PHP ist der Hauptunterschied zwischen == und == die Strenge der Typprüfung. == Die Konvertierung des Typs wird vor dem Vergleich durchgeführt, beispielsweise 5 == "5" gibt true zurück und === fordert an, dass der Wert und der Typ gleich sind, bevor True zurückgegeben wird, z. B. 5 === "5" gibt false zurück. In den Nutzungsszenarien ist === sicherer und sollte zuerst verwendet werden, und == wird nur verwendet, wenn die Typumwandlung erforderlich ist.

Die Methoden zur Verwendung grundlegender mathematischer Operationen in PHP sind wie folgt: 1. Additionszeichen unterstützen Ganzfaktoren und Floating-Punkt-Zahlen und k?nnen auch für Variablen verwendet werden. String -Nummern werden automatisch konvertiert, aber nicht für Abh?ngigkeiten empfohlen. 2. Subtraktionszeichen verwenden - Zeichen, Variablen sind gleich, und die Typumwandlung ist ebenfalls anwendbar. 3. Multiplikationszeichen verwenden * Zeichen, die für Zahlen und ?hnliche Zeichenfolgen geeignet sind; 4. Division verwendet / Zeichen, die vermeiden müssen, durch Null zu dividieren, und beachten Sie, dass das Ergebnis m?glicherweise schwimmende Punktzahlen sein kann. 5. Die Modulzeichen k?nnen verwendet werden, um ungerade und sogar Zahlen zu beurteilen, und wenn negative Zahlen verarbeitet werden, stimmen die Restzeichen mit der Dividende überein. Der Schlüssel zur korrekten Verwendung dieser Operatoren liegt darin, sicherzustellen, dass die Datentypen klar sind und die Grenzsituation gut behandelt wird.

Ja, PHP kann mit NoSQL -Datenbanken wie MongoDB und Redis durch bestimmte Erweiterungen oder Bibliotheken interagieren. Verwenden Sie zun?chst den MongoDBPHP -Treiber (installiert über PECL oder Composer), um Client -Instanzen zu erstellen und Datenbanken und Sammlungen zu betreiben, wobei Sie Insertion, Abfrage, Aggregation und andere Vorg?nge unterstützen. Zweitens verwenden Sie die Predis Library oder PHPREDIS-Erweiterung, um eine Verbindung zu Redis herzustellen, Schlüsselwerteinstellungen und -akquisitionen durchzuführen und PHPREDIS für Hochleistungsszenarien zu empfehlen, w?hrend Predis für die schnelle Bereitstellung bequem ist. Beide sind für Produktionsumgebungen geeignet und gut dokumentiert.

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPBECAMEPOPULARFORWebDevelopmentDuetoitSeaseoflearning, Seamlessintegrationwithhtml, weit verbreitete Hostingsupport, andalargeecosystemincludingFrameWorkelaravelandcmsplatformen -?hnliche WordPress.itexcelsinformlingsformen, Managingusesersions, Interacti

Tosettherighttimezoneinphp, usedate_default_timezone_set () functionAtthestartofyourScriptWithAvalididentifiersuchas'america/new_york'.1.usedate_default_timezone_set () beeanydate/timeFununtions.2.Alternativ, konfigurieren
