Schnelles einfaches Captcha in php

Schnelles einfaches Captcha in php

Captchas für die Hompage selbst gemacht!

Captcha Lösungen gibt es wie Sand am Meer. Von Von Super-duper bis so lalal. Hier ist eine einfache mit php gelöste Lösung.

Wirkungsweisen

Im ersten Teil Wird ein Bild mit zufälligen Zeichen erstellt. Im zweiten Teil wird es angezeigt und es wird eine Eingabe erwartet und im dritten wird geprüft ob es stimmt.

Teil 1: Captcha erstellen

Hier der Klassiker. 5 Zeichen gemischt aus Buchstaben und Zahlen

captchaklassik

 

 

<?php
session_start();

$zeichen = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',5)),0,5);
$captcha = imagecreatetruecolor(80,20);
imagefill($captcha, 0, 0, imagecolorallocate($captcha, 203, 215, 230));
imagestring($captcha, 5, 21, 3, $zeichen, imagecolorallocate($captcha, 0, 0, 0));
imagejpeg($captcha, "captcha.jpg");

$_SESSION["zeichen"] = $zeichen;
?>

Teil 2: Eingabe

Es empfiehlt sich diesen Schnipsel in die gleiche Datei wie den ersten zu setzen.

<form action="kontakt.php" method="post">
<img alt="" src="captcha.jpg" />  Bitte lösen sie das Captcha: <input type="text" maxlength="5" name="captcha" size="5" />
<input type="submit" value="Captcha prüfen" />

Teil 3: Prüfen

Jetzt wird nur noch der Teil den man durch ein Captcha sichern möchte mit dieser if/else abfrage umschlossen

<?
session_start();

if(strtolower($_SESSION["zeichen"]) == strtolower($_POST["captcha"]) )
{
//Hier der Code der nur durch die Richtige Captcha eingabe gezeigt/ausgeführt werden soll
}
else
{
//Was gezeigt werden soll wenn das Captcha falsch war
}
?>

Das war es.

Spass mit Captchas

nun da wir das "Grundgerüst" haben können wir ein bisschen damit spielen.

Spaß mit Zahlen

Hier ist das Gleiche mit Rechenaufgaben:

captcharechnen

 

 

$zeichen = substr(str_shuffle(str_repeat('0123456789',5)),0,2);
$zeichen2 = substr(str_shuffle(str_repeat('0123456789',5)),0,2);
$rechenart = substr(str_shuffle(str_repeat('+-',5)),0,1);
$captcha = imagecreatetruecolor(80,20);
imagefill($captcha, 0, 0, imagecolorallocate($captcha, 203, 215, 230));
imagestring($captcha, 5, 21, 3, $zeichen . $rechenart . $zeichen2 . "=", imagecolorallocate($captcha, 0, 0, 0));
imagejpeg($captcha, "captcha.jpg");

switch($rechenart) {
case '+':
$ergebnis = $zeichen + $zeichen2;
break;

case '-':
$ergebnis = $zeichen - $zeichen2;
break;
}
$_SESSION["zeichen"] = $ergebnis;

Spass mit Formel

Wenn schon rechnen dann ein Bisschen Nerdig. Löse diese Gleichung. Gerundet auf 2 Nachkommastellen

captchapq

 

 

$zeichen = substr(str_shuffle(str_repeat('0123456789',2)),0,2);
$zeichen2 = substr(str_shuffle(str_repeat('0123456789',5)),0,2);
$zeichen3 = substr(str_shuffle(str_repeat('0123456789',5)),0,2);
$rechenart = substr(str_shuffle(str_repeat('+-',5)),0,1);
$rechenart2 = substr(str_shuffle(str_repeat('+-',5)),0,1);
$text = "x^2 " . $rechenart . " " . $zeichen2 . "x " . $rechenart2 . " " . $zeichen3 . " =";
$captcha = imagecreatetruecolor(160,20);
imagefill($captcha, 0, 0, imagecolorallocate($captcha, 203, 215, 230));
imagestring($captcha, 5, 21, 3, $text, imagecolorallocate($captcha, 0, 0, 0));
imagejpeg($captcha, "captcha.jpg");

switch($rechenart) {
case '+':
switch($rechenart2) {
case '+':
$ergebnis1 = -($zeichen2 / 2) + sqrt(pow($zeichen2, 2)/4 - $zeichen3);
$ergebnis2 = -($zeichen2 / 2) - sqrt(pow($zeichen2, 2)/4 - $zeichen3);
break;

case '-':
$ergebnis1 = -($zeichen2 / 2) + sqrt(pow($zeichen2, 2)/4 + $zeichen3);
$ergebnis2 = -($zeichen2 / 2) - sqrt(pow($zeichen2, 2)/4 + $zeichen3);
break;
}

break;

case '-':
switch($rechenart2) {
case '+':
$ergebnis1 = ($zeichen2 / 2) + sqrt(pow($zeichen2, 2)/4 - $zeichen3);
$ergebnis2 = ($zeichen2 / 2) - sqrt(pow($zeichen2, 2)/4 - $zeichen3);
break;

case '-':
$ergebnis1 = ($zeichen2 / 2) + sqrt(pow($zeichen2, 2)/4 + $zeichen3);
$ergebnis2 = ($zeichen2 / 2) - sqrt(pow($zeichen2, 2)/4 + $zeichen3);
break;
}
break;
}
$ergebnis1 = round($ergebnis1, 2);
$ergebnis2 = round($ergebnis2, 2);

Das ist mal ein schweres Captcha. (Kleiner Tipp: die pq-Formel anwenden!).

\frac{p}{2}\pm\sqrt{\frac{p^2}{4}-q}\

Auch muss man um dieses Captcha einzubinden zwei Eingabefelder definieren und auch das Prüfscript muss angepasst werden.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


× zwei = 2

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>