Schon wieder ein Problem mim Gästebuch

  • PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schon wieder ein Problem mim Gästebuch

    Ich habe ja vor kurzem mal ein Gästebuch in php geschrieben, in folge eines Homepageumbaus, hab ich dieses jetzt nochmal neu in die Seite eingebaut. Allerdings spuckt es mir immer aus, dass der Sicherheitscode falsch sei (also das Captcha).
    Alles geht von der Seite gaestebuch.php aus, in der das Formular drin ist und beim Klick auf den Button wird man an die Datei gb.php weitergeleitet in der dieses steht:
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. $name=$_POST['name'];
    3. $text=$_POST['eintrag'];
    4. $mail=$_POST['email'];
    5. $code=$_POST['sicherheit'];
    6. if(trim($name)=="") die('Bitte gib deinen Namen an! <a href="javascript:window.history.back();">Zur&uuml;ck zum G&auml;stebuch </a>');
    7. if(trim($text)=="") die('Bitte gib einen Nachrichtentext ein! <a href="javascript:window.history.back();">Zur&uuml;ck zum G&auml;stebuch </a>');
    8. if(isset($_SESSION['captcha_spam']) AND $code == $_SESSION['captcha_spam']){
    9. unset($_SESSION['captcha_spam']);
    10. $datum = date("d.m.Y");
    11. $uhrzeit = date("H:i");
    12. if(trim($mail)=="")
    13. $daten="<br><table width='640' border='1'><tr><th width='640' scope='col'><div align='left'>".$_POST[name]." schrieb am ".$datum." - ".$uhrzeit.":</div></th></tr><tr><td>".$_POST[eintrag]."</td></tr></table><br>";
    14. else
    15. $daten="<br><table width='640' border='1'><tr><th width='640' scope='col'><div align='left'><a href=mailto:".$_POST[email].">".$_POST[name]."</a> schrieb am ".$datum." - ".$uhrzeit.":</div></th></tr><tr><td>".$_POST[eintrag]."</td></tr></table><br>";
    16. $datenbank = "daten.htm";
    17. $datei = fopen($datenbank,"a");
    18. $eintrag=strip_tags($eintrag);
    19. fwrite($datei, $daten);
    20. echo 'Danke f&uuml;rs Eintragen! <a href="gaestebuch.php">Zur&uuml;ck zum G&auml;stebuch </a>';
    21. } else {
    22. die ('Du hast den falschen Sicherheitscode eingegeben! <a href="javascript:window.history.back();">Zur&uuml;ck zum G&auml;stebuch </a>');
    23. }
    24. ?>
    Alles anzeigen

    Und dann noch die captcha.php, die auf der ursprünglichen Seite gaestebuch.php ausgeführt wird, von der man dann auf gb.php kommt. Ich glaube zwar nicht, dass es daran liegt, weil beim Bild wird alles richtig angezeigt:
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. unset($_SESSION['captcha_spam']);
    4. function randomString($len) {
    5. function make_seed(){
    6. list($usec , $sec) = explode (' ', microtime());
    7. return (float) $sec + ((float) $usec * 100000);
    8. }
    9. srand(make_seed());
    10. //Der String $possible enthält alle Zeichen, die verwendet werden sollen
    11. $possible="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    12. $str="";
    13. while(strlen($str)<$len) {
    14. $str.=substr($possible,(rand()%(strlen($possible))),1);
    15. }
    16. return($str);
    17. }
    18. $text = randomString(5); //Die Zahl bestimmt die Anzahl stellen
    19. $_SESSION['captcha_spam'] = $text;
    20. header('Content-type: image/png');
    21. $img = imagecreatefrompng("captcha.png"); //Backgroundimage
    22. $color = imagecolorallocate($img, 55, 55, 0); //Farbe
    23. $ttf = $_SERVER['DOCUMENT_ROOT']."/x-games/GBF.TTF"; //Schriftart
    24. $ttfsize = 14; //Schriftgrösse
    25. $angle = rand(0,5);
    26. $t_x = rand(16,22);
    27. $t_y = 22;
    28. imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
    29. imagepng($img);
    30. imagedestroy($img);
    31. ?>
    Alles anzeigen


    LIVE-ANSICHT

    © 2008 by Teamgrill Productions
  • Habs mir jetzt einige Male angeschaut aber nichts gefunden :S
    Als ich mal mit Session-Variablen rumhantiert habe, hatte ich komischerweise auch Probleme.. hab dann Cookies verwendet (besonders stolz bin ich darauf nicht ^^"). Eventuell funktionieren die bei dir auch besser. (Falls ich jetzt Mist rede, klärt mich bitte auf.) Also afaik werden ja sowohl Session-Variablen als auch Cookies beim Benutzer gespeichert, was auch jedes noch so gute Captcha zunichte macht, ich speichere den Captcha-Inhalt und die IP in eine MySQL-Tabelle, wo sie beim Überprüfen ausgelesen werden, dass solltest du vielleicht auch tun :)

    EDIT: Ich hatte noch so ein ungutes Gefühl im Bauch .. :D
    Danke boxxar, dass du mich um diese Erkenntnis bereichert hast ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von copyboy ()

  • Das Problem ist ja, dass es auf der alten Webseite funktioniert...
    Ich verstehe nicht wieso ich auf einmal das System ändern soll, wenns doch funktioniert. Seltsam.

    EDIT: Oha jetzt funktioniert es.. Anscheinend fehlte in der gb.php noch mal ein extra session_start..

    © 2008 by Teamgrill Productions