Avatar billede bgjensen Nybegynder
03. marts 2006 - 21:55 Der er 6 kommentarer og
1 løsning

kun 1 post pr. min

Hvordan laver jeg et script som gør at en "IP" kun kan lave en post i min gæstebog pr. min.

så noget i retning af:
if($_SESSION['ip'] == $REMOTE_ADDR) AND ($_SESSION['sidste_post'] + 1 minut) < (tiden nu)

og hvordan skal linien til at sætte $_SESSION['sidste_post'] se ud:
$_SESSION['sidste_post'] = tiden nu;
Avatar billede amews_aj Nybegynder
03. marts 2006 - 22:20 #1
$tiden_nu = time();
if($_SESSION['ip'] == $_SERVER['REMOTE_ADDR'] AND ($_SESSION['sidste_post'] + 60) < $tiden_nu) {
// POST OK
}



$_SESSION['sidste_post'] = time();
Avatar billede amews_aj Nybegynder
03. marts 2006 - 22:21 #2
Men hvornår sætter du session med ip?
Hvis du først sætter den efter man poster, så kan man slet ikke poste, da den så ikke svarer til ens aktuelle ip, derfor ville jeg bare skrive:

$tiden_nu = time();
if(($_SESSION['sidste_post'] + 60) < $tiden_nu) {
// POST OK
}



$_SESSION['sidste_post'] = time();
Avatar billede bgjensen Nybegynder
03. marts 2006 - 22:41 #3
if(isset($_SESSION['sidste_post']))
{
  $tiden_nu = time();
  if(($_SESSION['sidste_post'] + 60) > $tiden_nu) echo "Du må ikke poste endnu";
}
else
{
  $_SESSION['sidste_post'] = time();
  "sætter ind i db'en"
}

men virker ikke!
Avatar billede mclemens Nybegynder
03. marts 2006 - 22:41 #4
aj_amews løste den ... men alligevel er her lige lidt ekstra ;)

Hvis cookies er deaktiveret ... så hjælper det ikke noget (hjælper heller ikke på spam bots hvis de ikke er kodet til at godtage cookies(sessions))

På din side hvor man skriver i formen skal
$_SESSION[ip]=getenv("REMOTE_ADDR");
startes for at undgå spam.

samt bla.bla.bla du skal have cookies
aktiveret før du kan skrive i gæstebogen
- hvis ikke det er aktiveret så aktiver og opdater siden



herefter som aj_amews skriver skal der på den side der behandler din gæstebogs formular dataer være:

if(($_SESSION['sidste_post'] + 60) < time()){
if(isset($_SESSION[ip])){
// POST OK
$_SESSION['sidste_post']=time();
}else{echo"du skal have cookies aktiveret før du kan poste";
}else echo"du kan kun poste 1 gang pr. minut.

p.s. på siden hvor formular dataerne behandles må $_SESSION[ip]=getenv("REMOTE_ADDR"); ikke sættes da man så vil blive udsat for spam botter alligevel hvis samme side som den man poster med bruges så sæt ip via. det her: if(!isset($_POST[namefraformular]))$_SESSION[ip]=getenv("REMOTE_ADDR");
Avatar billede mclemens Nybegynder
03. marts 2006 - 22:44 #5
if(!isset($_SESSION['sidste_post']))$_SESSION['sidste_post']=0;

if(($_SESSION['sidste_post'] + 60) < time()){
if(isset($_SESSION[ip])){
// POST OK
$_SESSION['sidste_post']=time();
}else{echo"du skal have cookies aktiveret før du kan poste";
}else echo"du kan kun poste 1 gang pr. minut.
Avatar billede bgjensen Nybegynder
03. marts 2006 - 22:50 #6
ok nu virker det perfekt
Avatar billede domaz.dk Novice
04. marts 2006 - 07:07 #7
Du kunne os vælge at ha en post_cache tabel i en mysql database der så holder styr med hvornår en ip har postet sidst... derved undgår du det med at folk skal ha slået cookies til...
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