28. april 2004 - 21:47Der er
32 kommentarer og 1 løsning
Undgå spam af tagwall
Jeg har prøvet at læse lidt rundt omkring på E omkring dette. Jeg fandt også noget, men det virkede ikke helt efter hensigten. Det var noget med setcookie. http://www.eksperten.dk/spm/420386 Nemt nok at lægge ind, men det eneste der så sker er at der øverst på siden står "du skal vente 30 min. siden sidste nyhed". Jeg kan stadig tilføje flere og overspamme tagwall'en. Er det den bedste løsning til den slags eller hvordan vil i foreslå mig at lave det? Godt med point og en stor tak til en god løsning der dur. :)
Du kan jo evt logge brugerens IP? Har den lagt et indlæg, kan den først ligge igen om 30 min -> ?. Den kan omgåes ved at bruge forskellige PROXY. Setcookie kan omgåes ved at fjerne cookie... Men jeg kan give den en mulig løsning via IP!
Jo det er noget i den stil.. måske ikke lige 30 minutter, men anyway... den blokerer ikke noget. Der står bare den tekst øverst når jeg har postet og så kan jeg poste løs igen... Den med IP'en ville også være fin. Jeg er bare ude efter en god løsning der virker og garanterer at de ikke kan spamme løs. Det er et clan-site jeg er ved at lave for en, så der kommer mange tilfældige "møgunger" forbi :D
Jeg er lidt på vildspor med hvordan jeg laver det.
$ip = $_SERVER["REMOTE_ADDR"]; $q = mysql_query("SELECT id FROM iper WHERE ip = $ip AND date > UNIX_STAMP(NOW())+1800"); if(mysql_num_rows() > 0) { echo "IP er fundet, vent 30 min"; //Brugeren har skrevet, så fjern POST formen... } else { echo "SKRIV LØS..."; // Brugeren må gerne POST, så vis POST FORMEN... $q = mysql_query("INSERT INTO iper VALUES('',$IP,NOW()"); }
Smider koden.. jeg har før fået at vide at jeg har en indviklet kode. -------------------------------- <?php require_once('Connections/db.php'); ?> <?php $currentPage = $_SERVER["PHP_SELF"]; function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
jakobdo -> Det du siger er at IP er det eneste der kan/virker??? hvis, hvad gør en hel skole/forretning, de hopper jo på nettet fra sammme ip, der vil jo komme nogle problemer, så det med ip er også noget sovs. session id kan være en ide...men igen, luk og åben og de kan igen
Men hvis det er eneste løsninger må man jo tage sig til takke med dem. Hvis det så bare kan gøres besværligt for dem. Det gør mig ikke så meget om en hel skole har det. Problemet er vel ikke større end at de så bare må vente med at poste i tagwallen til de 30 min. er gået.
Om så de skulle vente et døgn er det fint. Det skal bare være så folk ikke gider at gøre sig besvær med at spamme. Skulle det ske er det så bare ærgerligt, men så har man da nok sørget for at det ikke er 10 mennesker der gider at gøre det.
Når bruger smider noget på din tagwall gemmer du også bare hans IP, laver et felt mere i din mysql database, hvis brugere spammer for vildt fra den IP kan du bare banne den ved at starte alle dine sider eller bare kun tagwall med at teste om han kommer fra den ip, hvis kan du jo lave noget ala det her: if($_SERVER["REMOTE_ADDR"] == "127.0.0.1") DIE("you have been banned from this page");
Ja, den er også fin, men jer er mere interesseret i at forbygge spam end at bekæmpe... Det med at banne kan jeg så altid få lavet. Lige nu drejer det sig bare om at jeg vil have gjort så de evt. kun kan smide en besked i tagwallen en gang i døgnet. At de så vil kringle sig udenom for at spamme er så noget andet. Hvis det er muligt direkte at gøre det, vil mange flere nok også gøre det. En tagwall er ikke en chat, så en besked i døgnet må være langt rigeligt. Næsten for meget... Kan jeg evt. 'banne' ip'erne i et døgn hvorefter de tømmes af databasen?
Kan jeg få et script og også få oplysninger om hvad databasen, tabellerne og rækkerne skal hedde og indstilles i databasen ud fra scriptet? Det ville være kanon idét jeg ikke er alt for smart til php koder og mysql. Alle de $'er gør mig forvirret. Jeg er i tvivl om hvor de fører hen og 'spørger' om.. Ja, jeg ved godt at jeg bare kan lære det, men nu beder jeg om hjælp til det da jeg ikke skal bruge det om 1 år. :D
Hvad skal jeg have i min database ud fra dette script? Det eneste den gjorde her var at gemme dato og tid.. resten var tomt Databasen kaldte jeg iper og havde date, ip og id i tabellen...
$ip = $_SERVER["REMOTE_ADDR"]; $q = mysql_query("SELECT id FROM iper WHERE ip = $ip AND date > UNIX_STAMP(NOW())+1800"); if(mysql_num_rows() > 0) { echo "IP er fundet, vent 30 min"; //Brugeren har skrevet, så fjern POST formen... } else { echo "SKRIV LØS..."; // Brugeren må gerne POST, så vis POST FORMEN... $q = mysql_query("INSERT INTO iper VALUES('',$IP,NOW()"); }
For mig underordnet.. bare jeg kan spærre for adgang til at poste nye beskeder i f.eks. 24 timer. Og somsagt helst så formen er væk så længe.. Den med IP lyder udemærket.
if (isset($_POST['tilfoej'])) { $q = mysql_query("INSERT INTO tagwall VALUES('','".$_POST['indhold']."',NOW()"); if (mysql_affected_rows($q) > 0) mysql_query("INSERT INTO iper VALUES('',$IP,NOW()"); } else {
$q = myqsl_query("SELECT * FROM tagwall ORDER BY dato"); while($r = mysql_fetch_assoc($q)) { echo $indhold, $forfatter; //Her skal du så printe hele tagwallen... }
$ip = $_SERVER["REMOTE_ADDR"]; $q = mysql_query("SELECT id FROM iper WHERE ip = $ip AND date > UNIX_STAMP(NOW())+1800"); if(mysql_num_rows() > 0) { echo "IP er fundet, vent 30 min"; //Brugeren har skrevet, så fjern POST formen... } else { echo "<form method='post'>"; // Brugeren må gerne POST, så vis POST FORMEN... echo "<input type='text' name='indhold'>"; echo "<input type='submit' name='tilfoej'>"; echo "</form>"; } }
Det var ikke så meget hjælp der var at hente her. Er der en der kan sætte et spamfilter ind i min kode og så fortælle mig hvordan databasen skal indstilles ud fra det stykke kode? (Navn, tabeller, rækker osv)
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.