Heim > Backend-Entwicklung > PHP-Tutorial > Einfache Captchas mit PHP und GD

Einfache Captchas mit PHP und GD

Jennifer Aniston
Freigeben: 2025-02-22 09:13:09
Original
576 Leute haben es durchsucht

Einfache Captchas mit PHP und GD

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.
  1. Erstellen Sie eine Form.
  2. erzeugen zufällige Zeilen.
  3. erzeugen zufällige Punkte.
  4. zufälligen Text erzeugen.
Der in diesem Artikel verwendete prozedurale Stil ist nur vorhanden, weil dies ein Beweis für das Konzept ist, und um die endgültige Datei so einfach wie möglich zu halten. In einem echten Projekt würden Sie oop gehen.

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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.

Einfache Captchas mit PHP und GD

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Das vorherige Bild ist nach diesem Schritt weiß.

Einfache Captchas mit PHP und GD

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 als beibehalten, d. H. Die vollständige Breite unserer Box. Die Koordinaten werden zufällig generiert. Dies erzeugt nur eine zufällige Zeile. Wir werden mehrere Zeilen erzeugen, indem wir diese Funktionalität in eine für die Schleife einfügen.

<span>$background_color = imagecolorallocate($image, 255, 255, 255);  
</span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

Einfache Captchas mit PHP und GD

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

Einfache Captchas mit PHP und GD

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

im nächsten Abschnitt.

Die Funktion Imagestring () schreibt den Text in unserem Bild. Es hat 6 Argumente:

  1. Bildreferenz.
  2. Schriftgröße des Textes (es kann höchstens 5 sein).
  3. x-Koordinate (sich proportional für jedes Alphabet verändern).
  4. y-koordinate (hielt gleich, obwohl wir dies auch zufällig ändern konnten).
  5. tatsächliche Zeichenfolge zu schreiben.
  6. 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

Einfache Captchas mit PHP und GD

Der im Captcha geschriebene Text ändert sich jedes Mal, wenn Sie die Seite aktualisieren.

Mehr Zufälligkeit kann erreicht werden, indem Designs mit den Pixeln erstellt oder die Farbe oder Größe geändert werden.

validieren

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.
  1. $ _ Session ['captcha_string'] = $ Word; Unsere Captcha -Zeichenfolge wird in einer Sitzungsvariablen gespeichert, die für Validierungszwecke verwendet wird.
wir ändern die Definition von Display (), um eine formähnliche Struktur hinzuzufügen.

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
  1. Wenn die Seite gerade geladen ist.
  2. 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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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-

Einfache Captchas mit PHP und GD

Wenn die Eingabe falsch ist, wird der Benutzer erneut aufgefordert.

Einfache Captchas mit PHP und GD

Wenn die Eingabe korrekt ist, wird der Benutzer eine Nachricht angezeigt.

Einfache Captchas mit PHP und GD

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage