Hi ich mal wieder ,
Also zu mein Problem ich habe mir mit PHP ein Gästebuch erstellt ging auch alles ganz gut.
So nun wollte ich eine Captcha Sicherheit einbauen.
Nun habe ich ne Menge Probleme damit.^^
Also das erste Problem das Captcha wird nicht angezeigt.
Die Datei captcha.php
<?php
session_start();
unset($_SESSION['captcha_spam']);
function randomString($len) {
function make_seed(){
list($usec , $sec) = explode (' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
//Der String $possible enthält alle Zeichen, die verwendet werden sollen
$possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
$str="";
while(strlen($str)<$len) {
$str.=substr($possible,(rand()%(strlen($possible))),1);
}
return($str);
}
$text = randomString(5); //Die Zahl bestimmt die Anzahl stellen
$_SESSION['captcha_spam'] = $text;
header('Content-type: image/png');
$img = ImageCreateFromPNG('/captcha/captcha.PNG'); //Backgroundimage
$color = ImageColorAllocate($img, 0, 0, 0); //Farbe
$ttf = $_SERVER['DOCUMENT_ROOT']."/captcha/XFILES.TTF"; //Schriftart
$ttfsize = 25; //Schriftgrösse
$angle = rand(0,5);
$t_x = rand(5,30);
$t_y = 35;
imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
imagepng($img);
imagedestroy($img);
?>
Alles anzeigen
Und habe sie so in die Gästebuch-Datei (neu.php) eingebaut:
<?php
echo '
<form action="" method="post">
<table>
<tr><td>Name:</td><td> <input type="text" name="username"></td></tr>
<tr><td>Email:</td><td> <input type="text" name="email"></td></tr>
<tr><td>Homepage:</td><td> <input type="text" name="homepage"></td></tr>
<tr><td colspan="2">Nachricht:
<textarea name="nachricht" cols="35" rows="8"></textarea><td></tr>
<tr><td>[img]captcha/captcha.php[/img]</td>
<td><input type="text" name="sicherheitscode" size="5"></td></tr>
<tr><td colspan="2"><input type="submit" value="Eintragen" name="senden"></td></tr>
</table>
</form>
';
IF(isset($_POST["senden"])){
include('datenbank.php');
$username = $_POST["username"];
$email = $_POST["email"];
$homepage = $_POST["homepage"];
$nachricht = $_POST["nachricht"];
$zeit = time();
$code = "INSERT INTO gbuch (id, username, email, homepage, nachricht, zeit, ip) VALUES('','$username','$email','$homepage','$nachricht','$zeit','$REMOTE_ADDR')";
session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] ==
$_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
}else{
die ("Der Sicherheitscode ist falsch!");
}
$eintragen = mysql_query($code);
IF($eintragen){
echo 'Eintrag hinzugefuegt';
}
}
?>
Alles anzeigen
Zweites Problem gibt man ein falsches Code ein kommt:
ZitatWarning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /srv/www/httpd/phost/u/de/unveu-ost/web/neu.php:15) in /srv/www/httpd/phost/u/de/unveu-ost/web/neu.php on line 24
Der Sicherheitscode ist falsch!
Könnt ihr mir sagen wo die Fehler sind?
Muss ich in der Datenbank noch Felder für das Captcha anlegen? Eigentlich nicht oder?