Zum Inhalt springen

Tutorial: Einfache Captchas mit PHP erstellen

Captchas (Completely Automated Public Turing test to tell Computers and Humans Apart) sind Tests, die verwendet werden, um sicherzustellen, dass eine Webseite von einem menschlichen Nutzer und nicht von einem automatisierten Programm besucht wird. Sie werden oft verwendet, um die Registrierung von Benutzerkonten oder das Absenden von Formularen zu schützen.

Um ein Captcha mit PHP zu erstellen, gibt es einige Schritte, die Sie befolgen können:

  1. Erstellen Sie eine PHP-Datei, die das Captcha generiert. In dieser Datei sollte eine Funktion enthalten sein, die ein Captcha-Bild erstellt und es an den Browser sendet.
  2. Verwenden Sie die PHP-GD-Bibliothek, um das Captcha-Bild zu erstellen. Diese Bibliothek bietet Funktionen zum Erstellen und Bearbeiten von Bildern. Verwenden Sie zum Beispiel die ImageCreate-Funktion, um ein neues Bild zu erstellen, und die ImageTTFText-Funktion, um den Text des Captchas auf das Bild zu zeichnen.
  3. Speichern Sie das Captcha-Text in der Sitzung. Verwenden Sie die PHP-Session-Funktionen, um den Captcha-Text in einer Sitzungsvariablen zu speichern. Dies ermöglicht es Ihnen, den Text später zu überprüfen, wenn das Formular abgesendet wird.
  4. Erstellen Sie ein Formular, das das Captcha anzeigt. Verwenden Sie das img-Tag, um das Captcha-Bild anzuzeigen, und fügen Sie ein Textfeld hinzu, in das der Benutzer den Captcha-Text eingeben kann.
  5. Überprüfen Sie den Captcha-Text, wenn das Formular abgesendet wird. Verwenden Sie die Session-Funktionen erneut, um den Captcha-Text aus der Sitzung abzurufen und ihn mit dem Text zu vergleichen, der vom Benutzer eingegeben wurde. Wenn die beiden übereinstimmen, ist der Benutzer möglicherweise ein Mensch. Wenn sie nicht übereinstimmen, könnte es sich um ein automatisiertes Programm handeln, und Sie können entsprechend reagieren.

Hier ist ein Beispielcode in PHP, der zeigt, wie man ein Captcha erstellen und überprüfen kann:

<?php

// Starten der Sitzung
session_start();

// Erstellen des Captcha-Bildes

// Bildgröße festlegen
$width = 150;
$height = 50;

// Neues Bild erstellen und Transparenz aktivieren
$image = imagecreatetruecolor($width, $height);
imagealphablending($image, true);
imagesavealpha($image, true);

// Hintergrundfarbe festlegen
$bg_color = imagecolorallocatealpha($image, 255, 255, 255, 127);

// Hintergrund mit der Hintergrundfarbe füllen
imagefill($image, 0, 0, $bg_color);

// Captcha-Text erstellen
$chars = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
$text = "";

for ($i = 0; $i < 5; $i++) {
  // Zufälligen Buchstaben auswählen
  $char = $chars[rand(0, strlen($chars) - 1)];
  $text .= $char;

  // Schriftart festlegen
  $font = "arial.ttf";

  // Schriftgröße festlegen
  $size = 30;

  // Schriftfarbe festlegen
  $color = imagecolorallocate($image, 0, 0, 0);

  // Text auf das Bild schreiben
  imagettftext($image, $size, 0, 10 + $i * 30, 35, $color, $font, $char);
}

// Captcha-Text in der Sitzung speichern
$_SESSION["captcha_text"] = $text;

// Captcha-Bild an den Browser senden
header("Content-Type: image/png");
imagepng($image);

// Ressourcen freigeben
imagedestroy($image);

?>

Dann benötigst Du noch ein Formular in HTML:

<form method="POST" action="verify.php">
  <img src="captcha.php" alt="Captcha-Bild">
  <br>
  <label for="captcha">Captcha-Text:</label>
  <input type="text" name="captcha" id="captcha">
  <br>
  <input type="submit" value="Absenden">
</form>

Und schließlich die Captcha-Überprüfungs-Datei (verify.php)

<?php

// Starten der Sitzung
session_start();

// Captcha-Text aus der Sitzung abrufen
$captcha_text = $_SESSION["captcha_text"];

// Captcha-Text aus dem Formular abrufen
$submitted_text = $_POST["captcha"];

// Captcha-Text vergleichen
if (strtolower($submitted_text) == strtolower($captcha_text)) {
  // Captcha wurde erfolgreich überprüft
  echo "Captcha erfolgreich überprüft.";
} else {
  // Captcha nicht überprüft
  echo "Captcha nicht überprüft.";
}

?>

Hinweis: Dies ist nur ein Beispielcode und sollte möglicherweise angepasst werden, um Ihren Anforderungen zu entsprechen. Sie können beispielsweise andere Schriftarten, Schriftgrößen oder Hintergrundfarben verwenden, oder den Code erweitern, um das Captcha zu verschleiern oder zu verzerren. Es empfiehlt sich auch, das Captcha zu speichern und zu überprüfen, nachdem es einmal erfolgreich überprüft wurde, um sicherzustellen, dass es nicht mehrmals von demselben Benutzer verwendet wird.

Abonniere das kostenlose KI-Update

Bleib auf dem Laufenden in Sachen Künstliche Intelligenz!

Melde Dich jetzt mit Deiner E-Mail-Adresse an und ich versorge Dich kostenlos mit News-Updates, Tools, Tipps und Empfehlungen aus den Bereichen Künstliche Intelligenz für dein Online Business, WordPress, SEO, Online-Marketing und vieles mehr.

Keine Sorge, ich mag Spam genauso wenig wie Du und gebe Deine Daten niemals weiter! Du bekommst höchstens einmal pro Woche eine E-Mail von mir. Versprochen.

Kai Spriestersbach

Kai Spriestersbach

Kai Spriestersbach ist erfolgreicher Unternehmer und digitaler Stratege mit einem Master-Abschluss in Web Science. Er ist Inhaber von AFAIK und verfügt über mehr als 20 Jahre Erfahrung im Aufbau und der Optimierung von webbasierten Geschäftsmodellen. Als einer der erfahrensten Search Marketing Experten im deutschsprachigen Raum hat er mehr als 25 Vorträge auf SEO- und Online-Marketing-Konferenzen in Deutschland und Österreich gehalten. In den letzten Jahren hat er sich intensiv mit Large Language Models beschäftigt und sich als Experte für die Textgenerierung mit Hilfe künstlicher Intelligenz etabliert. Seine Karriere begann er mit einer Ausbildung zum Mediengestalter (IHK), bevor er den Bachelor of Science (B.Sc) in E-Commerce absolvierte. Anschließend erwarb er den Master of Science (M.Sc) in Web Science und forschte an der RPTU im Bereich angewandter generativer KI.

×