[PHP] gästebuch spamschutz

Dieses Thema im Forum "Webentwicklung" wurde erstellt von JuTzI666, 26. April 2007 .

  1. 26. April 2007
    gästebuch spamschutz

    hallo RR'ler

    also ich habe ein gästebuch auf djzylo.ch und dort ist alles voller spam

    hat da jemand irgend ein code oder so für mich

    mfg JuTzI666
     
  2. 26. April 2007
    AW: gästebuch spamschutz

    Kenn ich, mach einfach ein weiteres input feld, in dem man z.b. 1212 eingeben muss! und wenn dies nicht machen, dann bauste in dein script ein if ($code =! '1212') ... und dann is gut, die bots kriegen das nämlich nicht hin

    Gruß
    saNz
     
  3. 26. April 2007
    AW: gästebuch spamschutz

    ja und dann der code?

    <input type="text" id="code" name="code" maxlenght="4">

    dann

    if ($code =! '1212');

    else "gb_insert.php";
     
  4. 26. April 2007
    AW: gästebuch spamschutz

    ich kann da nur
    Vorwort - Captcha Tutorial - stoppt-den-spam.info
    empfehlen den nutze ich auf allen seiten klein,schnell eingebaut, wirklungsvoll

     
  5. 26. April 2007
    AW: gästebuch spamschutz

    Dr. Lovejoy, sowas habe ich bereits oben beschrieben...mit der Einschränkung jedoch dass es einfach keinen perfekten Spamschutz gibt und auch Captchas sind fast immer von Bots zu knacken!
     
  6. 27. April 2007
    AW: gästebuch spamschutz

    also ich habe jetzt ein spam-schutz script gefunden und zwar das:

    spam-schutz.php

    PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.1 Transitional//EN">
    <html>
     <head>
      <title>Spam-Schutz</title>

    <script type="text/javascript">
    function eingaben_ueberpruefen(){
     if (document.Form.eingabe.value.length != 5){
      alert("Bitte geben Sie den Code ein!");
      document.Form.eingabe.focus();
      return false;
     }
     else
     return true;
    }


    function RND(){
     Zufall = Math.round(Math.random()*11+1);
     document.Form.code.value=Zufall;
     return Zufall;
    }
    </script>

     </head>
    <body onLoad="document.Form.eingabe.focus();">

    <h2>Spam-Schutz</h2>

    <?php
    // Spam-Schutz
    $eingabe  = @ $_POST [ "eingabe" ];
    $eingabe  strtolower ( $eingabe );
    $code  = @ $_POST [ "code" ];

    if(@
    $_POST [ "eingabe" ] != "" ){

     
    $chluessel [ 1 ] =  "dsnxn" ;
     
    $chluessel [ 2 ] =  "tepsh" ;
     
    $chluessel [ 3 ] =  "5fwnb" ;
     
    $chluessel [ 4 ] =  "fs7ha" ;
     
    $chluessel [ 5 ] =  "5ress" ;
     
    $chluessel [ 6 ] =  "ywyyw" ;
     
    $chluessel [ 7 ] =  "lcvr7" ;
     
    $chluessel [ 8 ] =  "gskaw" ;
     
    $chluessel [ 9 ] =  "u7twn" ;
     
    $chluessel [ 10 ] =  "4x8uw" ;
     
    $chluessel [ 11 ] =  "wtwem" ;
     
    $chluessel [ 12 ] =  "ehewh" ;
    // Weitere Schlüssel ab hier eingeben!

    // Überprüfung
     
    if ( $chluessel [ $code ] ==  $eingabe ) {
      echo 
    "<font color=blue>Die Eingabe war richtig.</font>" ;
     }
     else {
      echo 
    "<font color=red>Die Eingabe war falsch!</font>" ;
     }
    }
    ?>

    <form name="Form" action="<?php  echo  $_SERVER [ "PHP_SELF" ];  ?>" method="post" onSubmit="return eingaben_ueberpruefen(this.form)">
    <table>
     <tr>
      <td>Bitte den Bilder-Code eingeben! <small></small></td>
      <td>
       <input type=hidden name="code">
       <script type="text/javascript">document.write('<img src="'+RND()+'A.gif" width=210 height=50>');</script>
      </td>
     </tr>
     <tr>
      <td></td>
      <td><input type=text name="eingabe" style="text-transform: uppercase;"></td>
     <tr>
      <th colspan=2>
        <br>
       <input type=submit> &nbsp; <input type=reset>
      </th>
     </tr>
    </table>
    </form>

    </body>
    </html>
    aber wie kann ich das in meine gb_add.php includen, damit es auch nur noch einen submit button gibt...?

    gb_add.php

    PHP:
    < style type = "text/css" >
    <!--
    .
    Stil3  {
        
    font - size 20px ;
        
    font - weight bold ;
    }
    .
    Stil4  { font - family Arial Helvetica sans - serif }
    -->
    </
    style >

    <
    h2  class= "Stil4" >& nbsp ;</ h2 >
    <
    form action = "index.php?fools=gb_insert"  method = "post"  class= "formular Stil4" >
      <
    table width = "387"  height = "144"  border = "0"  cellpadding = "0"  cellspacing = "0" >
        <
    tr >
          <
    td colspan = "3" >< div align = "center"  class= "Stil3" > Eintrag ins Gästebuch hinzufügen </ div ></ td >
        </
    tr >
        <
    tr >
          <
    td width = "7" >& nbsp ;</ td >
          <
    td width = "98" >& nbsp ;</ td >
          <
    td width = "282" >& nbsp ;</ td >
        </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          <
    td > Name </ td >
          <
    td >< input name = "Name"  type = "text"  id = "name"  maxlength = "15"  /></ td >
        </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          <
    td > Email </ td >
          <
    td >< input type = "text"  name = "Email"  id = "email"  /></ td >
        </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          <
    td > Homepage </ td >
          <
    td >< input type = "text"  name = "Homepage"  id = "homepage"  /></ td >
        </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          <
    td > Beitrag </ td >
          <
    td >< textarea name = "Text"  rows = "10"  id = "beitrag" ></ textarea ></ td >
        </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          <
    td >& nbsp ;</ td >
          <
    td >& nbsp ;</ td >
        </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          <
    td >& nbsp ;</ td >
          <
    td >& nbsp ;</ td >
        </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          <
    td >< input type = "submit"  name = "submit2"  value = "Speichern"  onclick = "alert('Sinlose Beiträge werden umgehend gel&ouml;scht!
          
          &copy; The Fools');"
    ></ td >
          <
    td >< input type = "reset"  name = "submit"  value = "Zurücksetzen"  /></ td >
        </
    tr >
        <
    tr >
          <
    td >& nbsp ;</ td >
          <
    td >& nbsp ;</ td >
          <
    td >& nbsp ;</ td >
        </
    tr >
      </
    table >
    </
    form >
    falls ihr die gb_insert.php auch nocht brauch das wäre diese datei:

    gb_insert.php

    PHP:
    <div align="center">
    <?php

        
    include( "connect.inc.php" );

        if(!isset(
    $_POST [ 'Name' ], $_POST [ 'Email' ],
                  
    $_POST [ 'Homepage' ],  $_POST [ 'Text' ]))
                  {
                  die(
    "Bitte Benutzen sie das Formular aus dem Gästebuch\n" );
                  }
        if(
    trim ( $_POST [ 'Name' ]) ==  "" )
                  {
                  die(
    "Bitte geben sie einen Namen ein" );
                  }
        if(
    trim ( $_POST [ 'Text' ]) ==  "" )
                  {
                  die(
    "Bitte geben sie einen Text ein" );
                  }
        
    $sql  "INSERT INTO `gaestebuch` (`Name` , `Email` , `Homepage` , `Inhalt` , `Datum`) 
    VALUES (
    '"
    . addslashes ( htmlspecialchars ( $_POST [ 'Name' ])). "',  
    '"
    . addslashes ( htmlspecialchars ( $_POST [ 'Email' ])). "',
    '"
    . addslashes ( htmlspecialchars ( $_POST [ 'Homepage' ])). "',
    '"
    . addslashes ( htmlspecialchars ( $_POST [ 'Text' ])). "', NOW( ))" ;

        
    mysql_query ( $sql ) OR die( mysql_error ());
        
                  echo 
    "<p>Vielen Dank für ihren Eintrag.</p>\n" ;
                  echo 
    "<p><a href=\"index.php?fools=guestbook\">Zurück ins Gästebuch</a></p>\n" ;
    ?>
    </div>

    mfg JuTzI666
     
  7. 27. April 2007
    AW: gästebuch spamschutz

    servus,

    hier hast ein sehr sehr gutes tutorial:
    http://bwir.de/sonstiges/phpspamundhackschutz

    jedoch wurde mein spamschutz schon nach wenigen tagen auch von bots geknackt. also ein wirklich sicherer schutz gibt es nicht, höchstens du machst was wo der enduser rechnen oder raten muss:

    bsp: also bild ein simples haus, baum, auto etc ... und dann fragen, was ist auf dem bild zu sehen.

    oder wie ist das ergebnis der folgenden aufgabe: 1 + 2; 2 + 2. aufgaben die jeder mensch rechnen kann

    gruß wollknoll
     
  8. 27. April 2007
    AW: gästebuch spamschutz

    jop ist ja fast genau das selbe welches ich habe...doch könntest du mir sowas coden mit den rechnungen oder so?
     
  9. 27. April 2007
    AW: gästebuch spamschutz

    Wie ich nun bereits mehrfach sagte sind das zum Einen Captchas, und zum Anderen ... jemand der dein GB spammen will, wird das auch trotz CAPTCHA können ....

    Ich poste dir hier mal meinen Captcha Adapter des PEAR - Paketes "TEXT_CAPTCHA" ...

    ...edit

    und die CaptchaException+fatalException sind nur Kindklassen die von der PHP - Exception erben.
     
  10. 27. April 2007
    AW: gästebuch spamschutz

    ich habe diese datei includet...

    Fehler: Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /usr/export/www/vhosts/funnetwork/hosting/thefools/The Fools/guestbook/CaptchaAdapter.php on line 25
     
  11. 27. April 2007
    AW: gästebuch spamschutz

    jo ich habs nicht getestet, hier mal der code. musst natürlich noch deine schrift anpassen und in das verzeichnis des scriptes legen (beech.ttf oder andere halt):

    PHP:
    <? PHP
    header
    ( "Content-type: image/gif" );
    session_start ();  // Startet die Session

    $grafik  ImageCreate  ( 100 100 );  // Erzeugt ein 100x100px großes Bild
    $hintergrundfarbe  ImageColorAllocate ( $grafik 255 0 0 );  // Definiert die Farben
    $schriftfarbe     ImageColorAllocate ( $grafik 0 255 0 );   // in RGB-Schreibweise

    ImageTTFText  ( $grafik 20 0 15 70 $schriftfarbe "/beech.ttf" $_SESSION [ 'zahl1' ]. " " . $_SESSION [ 'operator' ]. " " . $_SESSION [ 'zahl2' ]);  // Code aus der Session in die Grafik schreiben
    ImageGif ( $grafik );  // Grafik erzeugen
    imagedestroy ( $grafik );  // Zwischenspeicher löschen
    ?>
    PHP:
    <? PHP
    session_start
    ();  // Session starten

    // Überprüfung des Prüfcodes, falls das Formular ausgefüllt wurde

    if (isset( $_POST [ 'submit' ])){
    if (
    $_POST [ 'pruefcode' ] ==  $_SESSION [ 'ergebnis' ]){

    echo 
    "Der eingegebene Prüfcode ist richtig<br>" ;
    // Aktionen, wenn Prüfcode richtig ist

    }

    else {

    echo 
    "Der eingegebene Prüfcode ist falsch<br>" ;
    // Aktionen, wenn Prüfcode falsch ist

    }
    // Ende der Formularüberprüfung

    $_SESSION [ 'zahl1' ] =  rand ( 0 , 5 );  // Prüfcode erzeugen und in der Session speichern
    $_SESSION [ 'zahl2' ] =  rand ( 0 , 5 );  // Prüfcode erzeugen und in der Session speichern
    $_SESSION [ 'operator' ] = ( rand ( 1 , 0 )) ?  '+'  '-' ;


    switch(
    $_SESSION [ 'operator' ])
    {
         case 
    '+' $ergebnis  $_SESSION [ 'zahl1' ] + $_SESSION [ 'zahl2' ];  break;
         case 
    '-' $ergebnis  $_SESSION [ 'zahl1' ] -  $_SESSION [ 'zahl2' ];  break;
    }

    $_SESSION [ 'ergebnis' ] =  $ergebnis ;

    ?>
    PHP:
    < html >
    <
    head >
    <
    title > Formularseite </ title >
    </
    head >
    <
    body >
    <
    img src = "code.php" >
    <
    form method = "POST" >
    <
    input type = "text"  name = "pruefcode" >< br >
    <
    input type = "submit"  name = "submit" >
    </
    form >
     
     
  12. 27. April 2007
    AW: gästebuch spamschutz


    Mh das ist die Zeile wo der Konstruktor aufgerufen wird, ich vermute du benutzt php kleiner als version 5 ...

    Quatsch Konstruktur, da wird einfach eine funktion deklariert und anscheind versteht deine version das "static" nicht.
     
  13. 28. April 2007
    AW: gästebuch spamschutz

    ich teste es kurz thx mal und bw habt ihr...

    doch würde es nicht gehen, wenn man sich registrieren muss, und nur durch die registration in die gb.php kommt?

    mfg JuTzI666
     
  14. 28. April 2007
    AW: gästebuch spamschutz

    ?? was hat das mit der registration bzw login zu tun. du frägst ja vorher ab, ob der user eingeloggt ist bzw registriert und dann gehts normal weiter ...

    denke das haut aber schon hin!

    gruß wollknoll
     
  15. 28. April 2007
    AW: gästebuch spamschutz

    Um die Frage des Threaderstellers zu beantworten, nur weil ein User registriert ist, heißt nicht dass er nicht auch spammt! Muss ja nochnichtmal extra passieren.
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.