Bildcode vor Submit abfragen ...

ultrakollega

Erfahrenes Mitglied
Hi Leute,

ihr kennt sicher alle diese Sicherheitsvorkehrung bei vielen Foren oder Eintragsformularen wo man erstmal einen Bildcode ablesen und in eine Feld eintragen muss, bevor es weitergeht.

Weiß jemand ob es hierfür was fertiges gibt bzw. nach was man genau suchen muss?

Mit "Bildcode" komm ich mal nicht weiter ;-) Das Zeug hat sicher eine bestimmte
Bezeichnung!?

Thx, für die Hinweise.

Grüße

Ultra
 
Moin,

Also ich habe das wiefolgt gemacht...

auzug aus der datei image.php:
PHP:
<?php 
/* Bilder
*  <1> Sicherheitsbild ausgeben.
*/
	if(isset($_GET['pfad']) && $_GET['pfad'] == "sicherheitsbild") {
		header("Content-type: image/png");
		
		$schriftart = "/templates/image/schriftarten/ariblkf";
		$schriftfarbe = "#ff6262";
		
		$code = code_erstellen();
		$_SESSION['bildcode'] = $code;
		
		$bild = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF'])."/templates/image/sicherheitsbild.png");
		
		$rgb = hexcode_to_rgb($schriftfarbe);
		$schrift= imagecolorallocate($bild,$rgb[0],$rgb[1],$rgb[2]);
		
		
		//> Text Mittig ausgeben.
		$text_info_box = imagettfbbox(12,0,$schriftart,$code);
		//> Rechnung: (Breite des Buttons / 2) - (Breite des Textes / 2)
		$mitte = (100/2) - ($text_info_box[2]/2);
		
		imagettftext($bild, 12, 0,$mitte,16, $schrift,$_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).$schriftart,$_SESSION['bildcode']); 
		imagepng($bild);
	}
?>

Die Funktion code_erstellen() und hexcode_to_rgb():
PHP:
<?php
/* Funktion: Zufälligen code generieren
*  >> Aus Alphabet und Zahlen ein Code erstellen.
*/
    function code_erstellen($laenge = 6) {
        $zeichenkette  = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $zeichenkette .= "abcdefghijklmnopqrstuvwxyz";
		$zeichenkette .= "0123456789";
        $code_ausgabe  = "";
        srand((double) microtime() * 1000000);
        for($i=0;$i<$laenge;$i++) {
            $code = rand(0, strlen($zeichenkette)-1);
            $code_ausgabe .= $zeichenkette[$code];
        }
        return $code_ausgabe;
    }


/* Funktion: Hexcode für Farben in RGB Code umwandeln.
*  >> #000000 zu R:0 G:0 B:0 conventieren.
*/
	
	function hexcode_to_rgb($farbwert) {
	    $farbwert = strtoupper($farbwert);
	    
		if(strlen($farbwert) == 6) {
	        $farbwert = "#".$farbwert;
	    }
		
	    $hexcode = array("0", "1", "2", "3", "4", "5","6", "7", "8", "9","A", "B", "C", "D", "E", "F");
	    $f[0] = substr($farbwert, 1, 2);
	    $f[1] = substr($farbwert, 3, 2);
	    $f[2] = substr($farbwert, 5, 2);
	    for($i=0; $i<=2; $i++) {
	        list($k) = array_keys($hexcode, $f[$i][0]);
	        list($l) = array_keys($hexcode, $f[$i][1]);
	        $f[$i] = $k*16 + $l;
	    }
		
	    return $f;
	}

?>

Prinzip von der image Datei ist einfach das er 1.) Den Code in die Session Speichert und 2.) das er das Bild ausgibt!

Um nun die Werte zu vergleichen habe ich einfach noch ein Textfeld erstellt und die Werte vom Textfeld mit dem der Session variable $_SESSION['bildcode'] verglichen wenn die Werte gleich sind dann TRUE ansonsten FALSE

MfG Funjoy

Ps: Ob das jetzt 100% sicher ist weiss ich nicht ist aber denke ich die einfachste variante um so eine Sicherheitsabfrage zu erstellen.
 
Zurück