Eigentlich dachte ich, ich hätte es verstanden...

Hier werden Probleme rund um das Rechen Captcha behandelt

Moderator: frameguard

Eigentlich dachte ich, ich hätte es verstanden...

Beitragvon honolulu85 » 20.08.2008, 12:05

Ich war ganz brav, habe alles so gemacht wie beschrieben und es auf meiner alten Webseite getestet - hat alles super funktioniert. Nun hab ich es auf meiner neuen Seite eingebaut und es funktioniert nicht. Erst dachte ich es liegt an 1&1, weil die beim letzten Mal auch etwas Zeit gebraucht haben, bis das Captcha angezeigt wurde, aber seit gestern tut sich gar nichts. Das Bild wird nicht angezeigt und ich finde den Fehler nicht. Irgendwer eine Idee?


rechen-captcha.php:

<?php
session_start();
unset ($_SESSION['rechen_captcha_spam'];
$zahl1 = rand(10,20);
$zahl2 = rand(1,10);
$operator = rand(1,2);

if($operator == "1" ) {
$operatorzeichen = "+";
$ergebnis = $zahl1 + $zahl2;
}

else {
$operatorzeichen = "-";
$ergebnis = $zahl1 - $zahl2;
}

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['rechen-captcha_spam'] = encrypt($ergebnis, "xyz");
$_SESSION['rechen-captcha_spam'] = str_replace("=","",
$_SESSION['rechen-captcha_spam'] );

$rechnung = $zahl1.$operatorzeichen.$zahl2."=?";
$img = imagecreatetruecolor(80,15);
$schriftfarbe = imagecolorallocate($img,13,28,91);
$hintergrund = imagecolorallocate($img,162,162,162);
imagefill($img,0,0,$hintergrund);
imagestring($img, 3, 2, 0, $rechnung, $schriftfarbe);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>

Alles ist im gleichen Ordner.

Vielen Dank schon einmal vorab :D
Zuletzt geändert von honolulu85 am 08.11.2008, 11:51, insgesamt 1-mal geändert.
honolulu85
 
Beiträge: 8
Registriert: 20.08.2008, 11:32

Beitragvon Seven-Secrets » 20.08.2008, 13:43

Ich vermute mal, dass es mit folgendem zusammenhängt:

a) 1und1 erlaubt kein png als bild und du muß jpg nehmen

b) formmail2.php kann nicht gehen weil du kein session_start(); am anfang hast, vor jedem anderen Code

c) weiß ich nciht, wie sich das script mit:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> verträgt

d) oder die latenz der seite ist zu langsam und aus dem grund wird das script abgebrochen
Seven-Secrets
 
Beiträge: 6
Registriert: 20.08.2008, 10:21

Beitragvon Rob [Admin] » 20.08.2008, 14:40

Also der Fehler liegt ganz klar hier:
http://www.dragonviews.com/di/rechen-captcha.php

Zeile 3 des Scripts:
unset ($_SESSION['rechen_captcha_spam'];

HIer fehlt die ) Klammer.
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon honolulu85 » 21.08.2008, 13:55

Danke erst einmal für die Tipps. Habe Klammer geschlossen (*peinlich, peinlich*), session_start(); eingefügt, Doctype entfernt (jetzt nur html-Klammer) und das mit dem jpg ausprobiert, aber leider kein anderes Ergebnis erhalten. Mit PNG hatte es ja auch schon einmal funktioniert. Vielleicht noch eine Idee, oder bleibt mir nur die Seite schneller zu machen?
honolulu85
 
Beiträge: 8
Registriert: 20.08.2008, 11:32

Beitragvon Rob [Admin] » 22.08.2008, 08:02

Nochmals die http://www.dragonviews.com/di/rechen-captcha.php aufrufen und feststellen, dass es immer noch eine Fehlerausgabe gibt.

Parse error: syntax error, unexpected '{', expecting ')' in /homepages/15/d67530696/htdocs/di/rechen-captcha.php on line 18
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon honolulu85 » 22.08.2008, 11:18

Rob [Admin] hat geschrieben:Nochmals die http://www.dragonviews.com/di/rechen-captcha.php aufrufen und feststellen, dass es immer noch eine Fehlerausgabe gibt.

Parse error: syntax error, unexpected '{', expecting ')' in /homepages/15/d67530696/htdocs/di/rechen-captcha.php on line 18


Danke, das mit dem direkt Aufrufen, hatte ich komplett vergessen. So findet man die Fehler natürlich :oops:

Jetzt funktioniert alles :D
honolulu85
 
Beiträge: 8
Registriert: 20.08.2008, 11:32

Beitragvon honolulu85 » 22.08.2008, 12:34

Tja, da hab ich mich wohl zu früh gefreut. Das Captcha wird zwar angezeigt, aber jetzt wird mir nach dem Versenden der Mail immer nur angezeigt, dass der Sicherheitscode falsch gewesen sei. D.h. wohl der Fehler liegt im Formmail2.php, beim Einbau. Vielleicht bei der else-Schleife?
honolulu85
 
Beiträge: 8
Registriert: 20.08.2008, 11:32

Beitragvon Rob [Admin] » 22.08.2008, 12:40

poste doch nochmals deine geänderte/aktuelle formmail2.php
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon honolulu85 » 22.08.2008, 12:44

Formmail2.php:
Zuletzt geändert von honolulu85 am 08.11.2008, 11:52, insgesamt 1-mal geändert.
honolulu85
 
Beiträge: 8
Registriert: 20.08.2008, 11:32

Beitragvon Rob [Admin] » 22.08.2008, 12:51

session_start(); muss GANZ an den Anfng, vor <html>, also:

<?php
session_start();
?>
<html>
<head>
<META HTTP-EQUIV="REFRESH" CONTENT="5;URL=http://www.dragonviews.com/index.html">
<title>Kontakt</title>
etc....
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon honolulu85 » 22.08.2008, 13:01

Ok, danke. Aber leider keine Änderung was die Anzeige nach dem Absenden angeht :?

Formmail2.php:
Zuletzt geändert von honolulu85 am 08.11.2008, 11:52, insgesamt 1-mal geändert.
honolulu85
 
Beiträge: 8
Registriert: 20.08.2008, 11:32

Beitragvon Rob [Admin] » 22.08.2008, 13:06

Lass dir folgende Daten ausgeben:

echo $_POST["sicherheitscode"]."<br>";
echo encrypt($_POST["sicherheitscode"], "xyz")."<br>";
echo $_SESSION['rechen_captcha_spam']."<br>";

Überprüfe ob 3 Werte ausgegeben werden. Das erste sollte deine Eingabe sein und die letzten 2 sollten identish sein.
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon honolulu85 » 22.08.2008, 13:12

Rob [Admin] hat geschrieben:Lass dir folgende Daten ausgeben:

echo $_POST["sicherheitscode"]."<br>";
echo encrypt($_POST["sicherheitscode"], "xyz")."<br>";
echo $_SESSION['rechen_captcha_spam']."<br>";

Überprüfe ob 3 Werte ausgegeben werden. Das erste sollte deine Eingabe sein und die letzten 2 sollten identish sein.
Zuletzt geändert von honolulu85 am 08.11.2008, 11:54, insgesamt 1-mal geändert.
honolulu85
 
Beiträge: 8
Registriert: 20.08.2008, 11:32

Beitragvon Rob [Admin] » 22.08.2008, 13:18

Zu Testzwecken deine Datei so anpassen:

<?php
session_start();
?>
<html>
<head>
<META HTTP-EQUIV="REFRESH" CONTENT="5;URL=http://www.dragonviews.com/index.html">
<title>Kontakt</title>
</head>
<body>
<?php
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);
}

$Empfaenger = "mymail@maimail.com";

if($_REQUEST['Send'])
{
if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zur&uuml;ck</a> und f&uuml;llen Sie alle Felder aus!";
}
else
{
$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="Send")
{
$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
}
}
$Mailnachricht .= "\nDatum/Zeit: ";
$Mailnachricht .= date("d.m.Y H:i:s");
$Mailbetreff = "Kontakt: ";
$Mailbetreff .= $_REQUEST['Betreff'];

echo $_POST["sicherheitscode"]."<br>";
echo encrypt($_POST["sicherheitscode"], "xyz")."<br>";
echo $_SESSION['rechen_captcha_spam']."<br>";

$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "xyz");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if($sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);

mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);
echo"Vielen Dank für Ihre Nachricht! Sie werden in 5 Sekunden weitergeleitet. <br>
Drücken Sie <a href=\"javascript:history.back();\">hier</a>, falls Ihr Browser kein automatisches Weiterleiten unterstützt.";;
}
else
{
echo "Der eingetragene Sicherheitscode ist falsch. Ihre Mail wurde nicht versendet. Sie werden in 5 Sekunden weitergeleitet.<br>
Drücken Sie <a href=\"javascript:history.back();\">hier</a>, falls Ihr Browser kein automatisches Weiterleiten unterstützt.";;
}
}
}
?>
</body>
</html>
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27

Beitragvon honolulu85 » 22.08.2008, 13:27

Es werden nur zwei ausgegeben, das erste ist das Rechenergebnis. Das zweite ?? Danach folgt wie üblich die Meldung, dass der Sicherheitscode falsch war und die Weiterleitung.

12
q6o=
honolulu85
 
Beiträge: 8
Registriert: 20.08.2008, 11:32

Nächste

Zurück zu Rechen Captcha

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron