Gå til innhold

Flooding sperre på gjestebøker ?


Anbefalte innlegg

Videoannonse
Annonse

Slutt å spør om slikt tull da. Det ikke noe som heter "en kode" for noe. Det finnes et sett funksjoner som ligger i PHP som standard, og alt må bygges på dette. Det finnes ikke èn flood-kode, på samme måte som det ikke finnes en kode for kriminalitet i mafia-spill.

 

For å få til noe slikt er du nødt til å lagre et slags timestamp for hver hendelse og sammenligne siste verdi med den aktuelle tiden. Se på Time(). Antar at du nå vet hvordan du kan bruke f.eks. MySQL.

Lenke til kommentar
Ikke svar slikt tull da.

 

Du kan jo lage ei rad i mysql db'en din med feks "flood" så IPen hans under, så da han skal skrive innlegg kan du sjekke om hans IP er i "flood" er den så kommer du med noe echo greier :)

 

Litt usikkker på hvordan du skal ta bort IPen hans fra "flood" etter 5min though. Vet ikke om det er noe timer sak i php :p

Lenke til kommentar

sql:

create table gb_flood (id int(11) not null default null primary key auto_increment, ip varchar(15), timestamp datetime);

 

php:

if (isset($_POST['submit_gjestebok']) && !empty($_POST['submit_gjestebok'])) {
 $res = mysql_query('select timestamp from gb_flood where ip = '.$_SERVER['REMOTE_ADDR'].';');
 if ($row = mysql_fetch_row($res)) {
$lastpost = strtotime($row[0]) + 300; // 5 * 60 = 300
$thispost = time();
if ($thispost < $lastpost) {
  echo 'You have to wait 5 mins between postings.';
  break 2;
}
 } else {
mysql_query('insert into gb_flood values(null, '.$_SERVER['REMOTE_ADDR'].', now())');
 }
 .... legg post til databasen
}

 

utestet.

Endret av grimjoey
Lenke til kommentar
Gjest Slettet+142

Da får du finne på et system som baserer seg på flatfiler for det også da vel?

f.eks en fil med format ip - timestamp.

For å sjekke får du vel hente inn alle oppføringene fra filen til et array og sjekke. Hvis du ikke vet hvordan det gjøres foreslår jeg at du ser på php.net..

 

php.net - fopen()

php.net - fwrite()

php.net - fclose()

php.net - file()

php.net - file_get_contents()

 

Og en ting til: LES hva folk skriver til deg i postene. Les f.eks Jonas sin post, og deretter din siste post en gang til..

Endret av Slettet+142
Lenke til kommentar
Gjesteboken min kjører flat-fil. Noen koder for det ?

... og hvordan i alle dager forventer du at vi da skal løse problemet ditt? :huh:

 

Uannsett, høyst teoretisk er det vel ikke verre enn å lagre tidspunkt og IP for hvert innlegg i gjesteboka i fila. Forutsatt at nyeste ligger "øverst"/først i fila vil det bare være å bla seg utover så lenge man ikke finner IPen og så lenge innlegget er eldre enn x antall sekunder.

 

Red.: Syk og trøtt. Det bare måtte bli en logisk feil i innlegget da :p

Endret av Ernie
Lenke til kommentar

if(file_get_contents("ip/" . $_SERVER['REMOTE_ADDR'] <=(time()+10)){
echo "Ikke flood!";
}
else{
fopen("ip/" . $_SERVER['REMOTE_ADDR'], "w");
fwrite("ip/" . $_SERVER['REMOTE_ADDR'], time());
}

 

Kode i råfiler. Et script som ikke lar noen legge innlegg før det har gått 10 sek ;)

Endret av bluefire
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...