Captcha in Guestbook einbinden

  • Guten Tag. Ich hab vor Jahren mal für meine HP ein Stand-Alone Guestbook eingefügt. Das hat sich auch echt bewährt. Nur leider gehen mittlerweile bis zu mehrere Spams stündlich ein.
    Durch Google bin ich auf stoppt-den-spam.info gekommen. Auf http://www.stoppt-den-spam.info/webmaster/capt…ha/vorwort.html wird das alles eigentlich ganz genau erklärt. Klingt auch alles ganz logisch und einfach. Aber beim letzten Schritt "Einbau ins Script" habe ich probleme. Ich weiß nicht wo ich das nun einbinden soll.

    Mein GB-Code ohne Captcha:
    Siehe Anhang

    Wie auf http://www.stoppt-den-spam.info/webmaster/capt…ha/vorwort.html erklärt habe ich einen Ordner Namens "captcha" erstellt. In diesem Ordner habe ich die 3 Dateien die ich von der Seite runter geladen habe, hoch geladen: "captcha.php", "xfiles.ttf" und "captcha.png".
    Dann habe ich wie unter dem Titel "Einbau ins Formular" erklärt den Code bei mir eingefügt (hinter der Zeile 296):

    HTML
    <tr> 
    <td><img src="captcha/captcha.php" border="0"  title="Sicherheitscode"></td>  
    <td><input type="text" name="sicherheitscode"  size="5"></td> 
    </tr>

    Nun kann ich auch sehen das ein Captcha generiert wird und das scheinbar alles Funktioniert. Was aber nicht so ist weil dieses "Captcha Feld" noch nicht überprüft wird. Dazu muss man wohl den letzten Schritt "Einbinden ins Srcipt" durchführen und da ist mein Problem. Wo genau füge ich den Code ein?

    Ich Danke euch.
    Gruß
    Frank

  • Also wenn ich das ganz am Anfang vom Code einbaue (also gleich in die 1. Zeile) wird die Seite einfach nur weiß, ohne Inhalt oder Fehler. Deshalb die Frage wo genau ich das Einfügen muss.

  • Tja, dann machst du was falsch. Da meine hellseherischen Fähigkeiten eher gering ausgeprägt sind, ist hier Ende der Fahnenstange. Allerdings könntest du uns ja mal den entsprechenden Quellcode posten, damit man sich das auch mal ansehen kann. Und meist sehr hilfreich:

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • Also ich hab das mal mit dem error reporting gemacht was du geschrieben hast. Er gibt folgenden Fehler:

    Notice: Undefined index: sicherheitscode in /kunden/246591_13053/webseiten/gb.php on line 6

    Meine ersten Zeilen im Dokument (ohne error reporting)

    PHP
    <?php
    session_start();
    if(isset($_SESSION['captcha_spam']) AND $_POST['sicherheitscode'] == $_SESSION['captcha_spam']){
    unset($_SESSION['captcha_spam']);

    Also hat er mit der Zeile ein Problem:

    PHP
    if(isset($_SESSION['captcha_spam']) AND $_POST['sicherheitscode'] == $_SESSION['captcha_spam']){

    Aber das ist der Code den ich einfügen soll. Siehe:
    http://www.stoppt-den-spam.info/webmaster/capt…bau-script.html

  • Versuche es mal mit

    PHP
    if(isset($_SESSION['captcha_spam']) && isset($_POST['sicherheitscode']) && $_POST['sicherheitscode'] == $_SESSION['captcha_spam']){
  • Hat leider nicht funktioniert. Der Fehler ist weg aber die Seite bleibt weiß.

  • Wenn das das ganze Script ist, was soll denn da auch kommen? Alles außer einem leeren Bildschirm wäre ein Wunder.

    So langsam möchte ich diesen Tipp geben: lerne Grundlagen!

  • Ähm, aus welchem Museum ist das GB? Wenn ich Sachen wie $HTTP_GET_VARS und $HTTP_POST_VARS lese, fällt mir nur eines dazu ein: hau' weg den Käse.

    <edit>
    Beim Überfliegen des Scriptes fällt auf, dass du alles in den if-Zweig gepackt hast. Das ist natürlich Quatsch. Es darf nur der Teil betroffen sein, bei dem die Daten gespeichert werden.
    Aber ehrlich gesagt habe ich keine Lust, über 800 Zeilen Quellcode danach durchzuforsten, das musst du selber machen. Zumal man das komplette Script besser in einzelne Teile zerpfücken sollte und an den richtigen Stellen die Teile per include einbinden sollte. Das würde die Sache deutlich übersichtlicher machen.
    </edit>

    Einmal editiert, zuletzt von bandit600 (15. Mai 2010 um 20:08)

  • Na wie schon gesagt. Ich hab es seit Jahren auf meiner HP. Will halt jetzt nur mit geringem Aufwand einen Spamschutz einbauen. Auch wenn die Seite nur paar Besucher am Tag hat wurde ich Opfer von diesen Spams. Von denen ich so ca. 60 Stück am Tag bekomme. Hilfe!!!

    Das Script habe ich nur übernommen. Ich hab keine Ahnung von PHP ^^

    Einmal editiert, zuletzt von hgw-guy (15. Mai 2010 um 20:17)

  • Ich hab keine Ahnung von PHP ^^


    Das sind genau die richtigen Vorraussetzungen. :(

    Also ich werde die über 800 Zeilen nicht für dich durcharbeiten. Vielleicht hast du Glück und es macht ja noch jemand für dich, obwohl die Wahrscheinlichkeit nicht sehr groß ist.

  • Trotzdem Danke an goldeneye. Solche gibt es ja sehr viele. Aber ich konnte kein anderes Stand-Alone Guestbook finden was auch noch open source ist. Jetzt hab ich mal nach einer neueren Version von meinem GB gegooglet und wurde fündig
    http://bigsam.gezzed.net/bigsam.1_2_03.php.txt
    Neu ist in diesem Script unter anderem folgendes:

    PHP
    // HTTP_REFERER is a server variable that represents the URL of the page which called the present script.
    // Big Sam script is supposed to call itself to add a message to the guestbook.
    // Most of Guestbook SPAM is sent by robots NOT using your Big Sam page. That's how we can track them and avoid them to post.
    // If $checkReferer is enabled, Big Sam will checks if the page that adds a message is YOUR guestbook form, and not any robot.
    // If you want to use this function, modify your $scriptURL (for example, to http://www.mywebsite.org/john/guestbook/bigsamguestbook.php)
    // If the referer doesn't corresponds to your $scriptURL, a "Invalid submission" system error will be returned.
    $checkReferer = false;
    $scriptURL = "http://www.myserver.com/bigsam.php"; // Don't forget to modify this if you want to use checkReferer !

    Ob das mit dem Referer ausreicht um die Spam Robots auszutricksen?
    Jetzt ist auch der Aufbau anders. Kann mir jetzt vielleicht jemand helfen wie ich da noch zusätzlich ein Captcha einfügen kann?

  • Für deine Seite dein Gb reicht das schon aus, bei richtigen Bots hilft nur eine Logig frage wenn überhaupt

    mfg

  • Mhh ja bis jetzt hab ich noch keinen Spam bekommen. Nun wollte ich aber mal gucken ob ich das Captcha wenigstens im Email Formular zum laufen bekomme. Das Script ist ja nun echt klein. Aber es funktioniert trotzdem nicht. Vielleicht kann da jemand gucken wo ich das captcha einfügen muss
    Email Formular Script:

    Ich hab alle 3 Dateien hochgeladen wie auf der Seite erklärt:
    http://www.stoppt-den-spam.info/webmaster/capt…php-script.html

    das Bild und das Textfeld unten im FORM eingefügt:

    HTML
    ......<!--ende kopie-->
    <img src="captcha/captcha.php" border="0" title="Sicherheitscode"><input type="text" name="sicherheitscode" size="5">

    Aber ich sehe immer noch nicht wo ich nun den Code einfügen soll:

    Also bei dem Script sind es jetzt ja nicht mehr 800 Zeilen. Kann da bitte mal jemand rüber schauen und mir zeigen wo ich das jetzt einfügen muss?

    Einmal editiert, zuletzt von hgw-guy (16. Mai 2010 um 17:53)

  • Also das mit dem Preferer hat nun doch nicht geklappt. Ich bekomme wieder Spams. Kann bitte mal jemand auf das Email Formular gucken und mir sagen wie es geht? Bitte!!!!

  • In dem Formular ist weit und breit nix von Captcha zu sehen. $_SERVER['PHP_SELF'] ist übel, google mit $_SERVER['PHP_SELF'] und xss füttern. <? ist veraltet, schreibe <?php. Wenn du das error_reporting hochdrehst, meckert PHP beim dem Script reichlich rum. Die Werte aus dem Formular ungeprüft zu übernehmen, ist fahrlässig.

    Fazit: Lerne die Grundlagen und korrigiere die ganzen Macken oder lass' es komplett sein.

  • Naja bandit600, ich glaube nicht das ich hier im Forum Hilfe gesucht habe damit mir andere User sagen das ich keine Ahnung von PHP habe und es deshalb sein lassen soll. Ich weiß schon selber wo meine stärken und schwächen liegen. Ich hab nun gegen deinen Rat doch nicht die Finger davon gelassen und das Email Formular mit den Captcha zum laufen bekommen. Ein Profi hätte sicher nur paar Minuten gebraucht, ich hab in den letzten 3 Tagen einige Stunden damit verbracht.

    Der Code für das Formular und das Capcha befinden sich im Anhang. Bei mir läuft es super, falls jemand meint das es total schlecht geschrieben ist, interessiert mich das nicht. Wenn es ernst gemeint ist kann es ja noch jemand optimieren.

    Wenn ich das mit dem Gästebuch hin bekommen habe, werde ich die Lösung hier posten. Hab aber erst mal keine Zeit dazu.