Hey mensen ,

heb een simpele gastenboek, zonder sql .
maar sinds enkele weken heb ik spambots op me site
Ik heb geprobeert ipbans via .Htacces te geven.
maar omdat ze telkens proxy's pakken maakt dat dus niet uit:)

nu ben ik bezig met een vraag die ze moeten invullen waar maar 1 goede antwoord voor is
maar helaas werkt het niet naar behoren
zonder intevullen kunnen ze gewoon posten

heb deze topic ook op andere forum geplaats
maar daar nog geen hulp gehad

hier mijn script

<?php
 
 $amount=15;

  if ($_GET['action']=='write') {
  	header('location: gb.php?action=read&start=0');
    $file=fopen('gastenboek.txt','a');

    $message=str_replace("\r",'',$message);
    $message=str_replace("\n",'{{',$_GET['message']);
    fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y').'|||'.$_GET['url'].'|||'.$message."\n");
    fclose($file);
    
  }

  $start=(isset($_GET['start'])?$_GET['start']:0);
  $gastenboek=Array();
  $gastenboek=file('gastenboek.txt');

?>

 <SCRIPT language="JavaScript">
    function validate(form) {
      if (form.name.value=="") {
        alert("Vul je naam in");
        return false;
      } else if (form.message.value=="") {
        alert("Vul je bericht in");
        return false;
      }
    }


if (isset($antispam == '8') or ($antispam == 'acht')) {
echo $content=eregi_replace("<!--beginning-->", "<!--beginning-->$message", $content);
}
    </SCRIPT>
    
 
  <P>
  <TABLE width="100%" cellspacing="0" cellpadding="0" >
    <TR>
      <TD><b>Ik zou het leuk vinden als je een berichtje achter laat in het gastenboek.</b><br></TD>
    </TR>
  </TABLE>
  <TABLE width="100%" cellspacing="0" cellpadding="0">
    <TR>
      <TD class="side"> Berichten <? echo $start+1; ?> tot en met <? echo min($start+$amount,sizeof($gastenboek)); ?>.
        <HR> <TABLE width="100%" >
          <?
          $gastenboek=array_reverse($gastenboek);
          for ($i=$start;$i<$start+$amount && $i<sizeof($gastenboek);$i++) {
            list($name,$email,$date,$url,$message)=explode('|||',$gastenboek[$i]);
            $message=str_replace('{{',"\n",$message);
            echo '<TR><TD><B>'.($email!=""?'<A href="mailto:'.$email.'">'.$name.'</A>':$name).'</B></TD><TD 

align="right"><B>'.$date.'</B></TD></TR>'."\n";
            echo ($url!=""?'<TR><TD colspan="2"><A href="'.$url.'" target="_blank">'.$url.'</A></TD></TR>':'')."\n";
            echo '<TR><TD colspan="2"><SPAN>'.str_replace("\n",'<BR>',htmlspecialchars

($message)).'</SPAN></TD></TR>'."\n";
            echo '<TR><TD colspan="2"><HR></TD></TR>'."\n";
          }
        ?>
        </TABLE>
        <CENTER>
          <?
          if ($start>0) echo '<A href="gb.php?start='.max(0,$start-$amount).'"><<<</A> ';
          if ($start+$amount<sizeof($gastenboek)) echo ' <A href="gb.php?start='.($start+$amount).'">>>></A>';
        ?>   </CENTER></TD>
    </TR>
  </TABLE>
  <P>
  <TABLE width="100%" cellspacing="0" cellpadding="0" >
    <TR>
      <TD class="side">Nieuw bericht</TD>
    </TR>
  </TABLE>
  <TABLE width="100%" cellspacing="0" cellpadding="0" >
    <TR>
      <TD class="side"> <FORM action="gb.php" method="GET" onSubmit="return validate(this);">
          <INPUT type="hidden" name="action" value="write">
          <TABLE class="side">
            <TR>
              <TD>Naam:</TD>
              <TD><INPUT type="text" name="name" size="30"></TD>
            </TR>
            <TR>
              <TD>E-Mail:</TD>
              <TD><INPUT type="text" name="email" size="30">
                <font color="#f19028">(optioneel)</font></TD>
            </TR>
            <TR>
              <TD>Homepage:</TD>
              <TD><INPUT name="url" type="text" value="http://" size="30">
                <font color="#f19028">(optioneel)</font></TD>
            </TR>
            <TR>
              <TD>Bericht:</TD>
              <TD><TEXTAREA name="message" cols="50" rows="5"></TEXTAREA></TD>
            </TR>
          </TABLE>


Anti-spam code: hoeveel is zes plus twee? <input type="text" name="antispam" size="3">
<input type="submit" name="email_submit" value="submit" ?>
    </form>
</form>
          
  <p>
    
        </FORM></TD>
    </TR>
  </TABLE>
kan je code niet lezen je hebt de tags verkeerd.

[size=xsmall]Toevoeging op 26/08/2014 17:44:52:[/size]

een input maken met de text er in?

<INPUT name="code" type="text" value="antispam code" size="30">

Jordy xxx staat erachter al <input type="text" name="antispam" size="3">
In mijn ogen blijven die spammers in gastenboeken net virussen. Ze blijven zich steeds muteren om hun spam in je gastenboekje te dumpen. En ook werken ze nog eens via botnets, waardoor ze een oneindig aantal IP-adressen voor dit doeleinde kunnen misbruiken.

Ikzelf heb ooit eens een vangnet ingebouwd om een checkbox te maken, en die een style="display:none" mee te geven. Indien deze aangevinkt is, wat veel botjes doen, dan loopt het script dood. Als deze niet is aangevinkt (want een normaal mens ziet die checkbox niet) dan gaat het script gewoon door en wordt het bericht in het gastenboek geplaatst.

Het valt te proberen, maar het is de vraag of het effectief blijft. Anders is een CAPTCHA-code iets wat je kan overwegen. Of misschien anders AKISMET gebruiken, deze pikt de spam er tussen uit, alleen is deze voor commerciële doeleinden betaald, wel betaalbaar gelukkig.
Zou je mischien zo een box in mijn script kunnen verwerken kijken of dat werkt :$?
bouw een checkbox in je formulier, en maak die ontzichtbaar.
Kijk met


<?php
if(isset($_POST['human_check'])) {
die();
}
?>


Voor de mensen die zich afvragen waarom mijn script dood gaat. De gebruiker ziet er toch niks van, en een bot maakt het niks uit dat de layout afgekapt zal worden door een die();
Ik redirect bots altijd naar de NSA (in de ijdele hoop dat ze daar van schrikken)
ik heb nu zeg maar vraag ingebouwd maar hij werkt niet :(
en wil hem graag werkend krijgen iemand aanpassingen van me script om mischien te zorgen dat hij werkt

versie staat online

www.dartcafe-sport.nl/gb.php

if (isset($antispam == '8') or ($antispam == 'acht')) {
echo $content=eregi_replace("<!--beginning-->", "<!--beginning-->$message", $content);
}

Dit is PHP-code, en kan je niet in een Javascript-blok zetten.
Je checked blijkbaar helemaal niks.
Ik klik op submit en hop er is een leeg item in het gastenboek bij.
aar heb het geprobeert maar als nog werkt het niet :(

-Santhe- ik merk het inderdaad

Reageren