Avatar billede scriptnet Nybegynder
14. august 2005 - 21:23 Der er 2 kommentarer og
1 løsning

Komentarfunktion - Spamfilter

Hey Eksperter...

Jeg sider og bakser med et nyhedsscript med en kommentar funktion. Og da jeg ikke vil have at brugerne på sitet overspammer de forskellige nyheder vil jeg gerne have et spamfilter. Sådan at man kun kan skrive hver 30 sekund eller sådan noget.

Jeg er ikke helt let på fod når det gælder php så vil meget gerne har en smule forklaring på løsningen da mit mål også er at lære noget :) Jeg har leget lidt med session, men desvære uden held.

Således ser min kode ud indtil videre:

visnyhed.php
.....
<form method="post" action="form.handle.php" onsubmit="return CNSubmitComment()" name="comment" id="comment">
<input type="hidden" name="referer" value="comment">
<input type="hidden" name="parent" value="<?php echo $_GET['id']; ?>">
<input type="hidden" name="ip" value="<?php echo $ip ?>">

Navn: <input type="text" name="name" style="width: 120px" name="name" tabindex="1" MAXLENGTH=12>
Email: <input type="text" name="email" value="n/a" style="width: 120px" id=mail tabindex="2">

<br>
<textarea name="text" rows="7" cols="0" style="width: 415px"></textarea><br><br>

<input type="submit" name="submit" value="Send"> <input type=checkbox name=CNremember id=CNremember value=1> <label for=CNremember>Remember Me</label> (<a href="java script:CNforget();">Forget Me</a>)


</form>

....


formhandle.php
<?php
include('inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);

if ($_POST['referer'] == 'comment') {
    if (empty($_POST['name']) && empty($_POST['text'])) {
        echo '<font color="red">Alle felter er ikke udfyldt!</font>';
    } else {
        $_POST['email'] = preg_match("/^[\w\.\-_]+@([\w\-_]+\.)+\w+$/i",$_POST['email']) ? $_POST['email'] : '';
        mysql_query("INSERT INTO comments VALUES ('','".$_POST['name']."','".$_POST['email']."',now(),'".$_POST['text']."','".$_POST['ip']."','".$_POST['parent']."')") or die(mysql_error());
        header("Location: visnyhed.php?id=".$_POST['parent']);
    }
}
?>


På forhånd mange tak!

Mvh. Tobias
Avatar billede coderdk Praktikant
15. august 2005 - 07:52 #1
I toppen af det script der submittes til:

<?php

  session_start();
  if ( !empty( $_SESSION['lastsub'] ) && time() - 30 <= $_SESSION['lastsub'] )
  {
      die( "Ro på, cowboy! Det er mindre end 30 sekunder siden du sidst submittede!" );
  }
  $_SESSION['lastsub'] = time();


Ikke testet, men det burde da virke ;)
Avatar billede scriptnet Nybegynder
15. august 2005 - 17:32 #2
Det virkede mange tak!
Avatar billede coderdk Praktikant
15. august 2005 - 20:21 #3
Det var så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester