Thema: CAPTCHA Problem
-
Hey,
habe ein Script von der Page Stoppt-den-Spam.info in meine Homepage eingebaut, klappt leider noch nicht ganz so wie es soll. Es handelt sich um ein CAPTCHA Code. Die Anzeige des Codes funktioniert einwandfrei, das Problem stellt sich bei dem Sichern der Daten. Das Formular prüft ob der eingegebene CAPTCHA Code mit dem vorgegebenen übereinstimmt und 'sollte' den Eintrag speichern. Obwohl ich den richtigen Code eintrage sichert er nichts.
Der Code:
captcha.php
Im FormularPHP-Code:<?php
//ERSTELLEN EINES SICHERHEITSCODES
session_start();
unset($_SESSION['captcha_spam']);
$text = rand(1000,10000); //Zufallszahl
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$_SESSION['captcha_spam'] = encrypt($text, "8h384ls94"); //Key
$_SESSION['captcha_spam'] = str_replace("=", "", $_SESSION['captcha_spam']);
header('Content-type: image/png');
$img = ImageCreateFromPNG('captcha.PNG'); //Backgroundimage
$color = ImageColorAllocate($img, 0, 0, 0); //Farbe
$ttf = "fontf"; //Schriftart
$ttfsize = 25; //Schriftgrösse
$angle = rand(0,5);
$t_x = rand(5,50);
$t_y = 35;
imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
imagepng($img);
imagedestroy($img);
?>
1. Eingabefeld
2. Abfrage ob falsche Eingabe
3. Ausgabe des Codes
Überprüfung ob der vorgegebene mit dem eingetragenen Code übereinstimmtPHP-Code://1.
<input type="text" name="captcha" maxlength="4">
//2.
if(session_is_registered("captcha")){
echo "<br><font color='#9B3C3C'><b>Sicherheitscode inkorrekt eingegeben!</b></font>";
session_unregister("captcha");
}
//3.
<img src="captcha.php" border="0" title="sicherheitscode">
Es geht nur um die markierten Zeilen die ersten und letzten sind teil des Gästebuchscripts. Wie gesagt trotz korrekter Eingabe wird der Eintrag nicht gespeichert. Kann mir da evtl. jemand weiterhelfen? =/PHP-Code://if($_GET['action']=="save")
// {
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST['captcha'], "8h384ls94");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if($sicherheits_eingabe == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
//speichern der daten
}else{
session_register("captcha");
}
// }
Link: www.fahrrad-warscheid.de/html/gb.php
Greetz
Zusatzinfo:
Ich nehme an es liegt an der Session. Eigentlich müsste ja die session captcha registiert werden falls kein Eintrag vorgenommen wird, anders gesagt im Falle einer inkorrekten Eingabe des Codes. Sie wird aber nicht registiert...
-
Da du mit $_GET arbeitest nehme ich an, dass register_globals deaktiviert ist (was auch richtig ist), daher funktioniert session_register() nicht.
Stattdessen solltest du mit $_SESSION arbeiten.
PHP-Code:$_SESSION['captcha'] = true;
KIDS Kinderbetreuungsdienst
Xing
They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety.
Benjamin Franklin
-
Problem leider nicht behoben =/
gleiche Fehler wie bisher...
habe else schleife erweitert:
ohne Erfolg er leitet nicht weiter, das heißt er geht nicht in die else schleife. Müsste er aber oder nicht?!PHP-Code:}else{
$_SESSION['captcha'] = true;
echo "<meta http-equiv='refresh' content='0; URL=?action=neu'>";
}
Geändert von Nepheus (25.03.07 um 14:50 Uhr)
-
29.03.07 13:29 #4
Hast du den error_reporting mal auf E_ALL gesetzt?
PHP-Code:error_reporting ( E_ALL );
-
Wo muss ich das denn reinschreiben und was macht das? Bin nicht so der Profi in PHP sorry =/
-
error_reporting()
Ein Blick in die Funktionsreferenz bringt immer etwas
KIDS Kinderbetreuungsdienst
Xing
They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety.
Benjamin Franklin
-
30.03.07 09:21 #7
Hm, du könntest dir natürlich auch mein Tutorial mal ansehen

http://www.tutorials.de/forum/php-tu...-freetype.html
-
Problem gelöst.
Habe die "Save" Funktion in eine neue Datei gepackt. Der Fehler war wohl was mit session. Da in der neuen Datei die session nochmal gestartet wurde wurde das problem wohl von selbst behoben, naja weiß auch nich genau trotzdem thx an euch =)
![]() |
PHP 5 / MySQL 5 Seminar (22 Stunden Video-Training) Preis: früher: 39,95€ - jetzt nur: 7,99€ PHP 5 / MySQL 5 Lernkurs – 22 Stunden Video-Training auf DVD Hier geht es zum Angebot Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar! |
Ähnliche Themen
-
Problem mit Captcha-Grafiken erstellen
Von xtratz im Forum PHPAntworten: 0Letzter Beitrag: 23.05.07, 13:19 -
Captcha Problem
Von d2mike im Forum PHPAntworten: 2Letzter Beitrag: 09.01.07, 12:12 -
captcha problem
Von croqued-monsieur im Forum PHPAntworten: 4Letzter Beitrag: 14.06.06, 10:30 -
Captcha Problem (einbinden)
Von Benard im Forum PHPAntworten: 6Letzter Beitrag: 22.05.06, 12:41 -
Captcha: Verschleierung
Von mistertwisters im Forum PHPAntworten: 5Letzter Beitrag: 07.05.06, 14:17



Zitieren

Login





Lesezeichen