|
|
| |
| |
Hallo und herzlich willkommen! Tutorials.de ist eine Hilfe-Community mit dem Motto User helfen Usern. Als Gast verfügst Du über Schreibrechte in unseren Foren und Blogs. Du kannst dich aber gerne auch kostenlos registrieren und Teil unserer Gemeinschaft werden! Viel Spaß & Erfolg bei der Vermehrung deines Wissens :-)
|
|
|
 |
|
|
|
|
|
|
25.03.07, 11:27
|
#1 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2004
Beiträge: 103
Renommee-Modifikator: 0
|
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
|
PHP-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);
?>
|
Im Formular
1. Eingabefeld
2. Abfrage ob falsche Eingabe
3. Ausgabe des Codes
|
PHP-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">
|
Überprüfung ob der vorgegebene mit dem eingetragenen Code übereinstimmt
|
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");
}
// }
|
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? =/
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...
|
25.03.07, 13:28
|
#2 (permalink)
|
|
do ut des
Registriert seit: Nov 2001
Ort: Wuppertal
Beiträge: 4.785
Renommee-Modifikator: 54
|
AW: CAPTCHA Problem
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;
|
|
25.03.07, 14:42
|
#3 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2004
Beiträge: 103
Renommee-Modifikator: 0
|
AW: CAPTCHA Problem
Problem leider nicht behoben =/
gleiche Fehler wie bisher...
habe else schleife erweitert:
|
PHP-Code:
|
|
}else{ $_SESSION['captcha'] = true; echo "<meta http-equiv='refresh' content='0; URL=?action=neu'>"; }
|
ohne Erfolg er leitet nicht weiter, das heißt er geht nicht in die else schleife. Müsste er aber oder nicht?!
Geändert von Nepheus (25.03.07 um 14:50 Uhr).
|
29.03.07, 13:29
|
#4 (permalink)
|
Registriert seit: Jul 2005
Ort: Karlsruhe
Beiträge: 1.585
Renommee-Modifikator: 17 
|
AW: CAPTCHA Problem
Hast du den error_reporting mal auf E_ALL gesetzt?
|
PHP-Code:
|
|
error_reporting ( E_ALL );
|
|
29.03.07, 13:38
|
#5 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2004
Beiträge: 103
Renommee-Modifikator: 0
|
AW: CAPTCHA Problem
Wo muss ich das denn reinschreiben und was macht das? Bin nicht so der Profi in PHP sorry =/
|
29.03.07, 20:21
|
#6 (permalink)
|
|
do ut des
Registriert seit: Nov 2001
Ort: Wuppertal
Beiträge: 4.785
Renommee-Modifikator: 54
|
AW: CAPTCHA Problem
error_reporting()
Ein Blick in die Funktionsreferenz bringt immer etwas 
|
31.03.07, 15:29
|
#8 (permalink)
|
|
Mitglied Gold
Registriert seit: Jan 2004
Beiträge: 103
Renommee-Modifikator: 0
|
AW: CAPTCHA Problem
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 =)
|
|
| Themen-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
|
 |
|
»
Neue Tutorials
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
»
Letzte News
|
 |
|
|
|
|
|
|
|
|
|
|
»
Tools
|
 |
|
|
|
|
|
»
Neue Links
|
 |
|
|
|
|
(Cinema 4D-Objekte)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
»
Jobs @ tutorials.de
|
 |
|
|
|
|
|
|
|
|
|
|