Avatar billede nomisweb Nybegynder
29. maj 2006 - 09:38 Der er 22 kommentarer og
1 løsning

Spam i min gæstebog?

Jeg har lavet en gæstebog som er begyndt at blive spammet. Hvorfor? og hvordan får jeg det til at holde op?
Mit gæstebogs script ser sådan ud:
<?
$send=$_POST['skriv'];
$name=$_POST['name'];
$email=$_POST['email'];
$message=$_POST['message'];
?>
<form method="post" action="<? echo    $PHP_SELF; ?>">
    <input type="hidden" name="skriv" value="1">
    <table border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="70">Dit navn:<br /></td>
                <td><input type="text" name="name" size="17"><br /></td>
                <td rowspan="4" align="center"></td>
            </tr>
            <tr>
                <td width="70">Din email:<br /></td>
                <td><input type="text" name="email" size="17"><br /></td>
                <td></td>
            </tr>
            <tr>
            <td width="70">Besked:<br /></td>
                <td><textarea name="message" cols="55" rows="4"></textarea></td>
                <td></td>
          </tr>
            <tr>
            <td colspan=2 align="center"><input name="submit" type=submit value="Send"></td>
                <td></td>
          </tr>
    </table>
    </form>
    <br />
<?
if ($send==1){
    if($add_gbog=mysql_query("INSERT INTO gbog (name, email, message) values ('$name', '$email', '$message')") && $add_nyhedsbrev=mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$email')"))
    {
        $out .= "<b>Gæstebogen er opdateret</b><br /><br />";
        //if($add_nyhedsbrev=mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$email')"))
    }
    else
    {
        $out .= "Transmission error. No data was added!";
        $out .= mysql_error();
}
}


//Hent gæstebog
$out .="<table>";
$hent=mysql_query("SELECT name, email, message FROM gbog ORDER BY id DESC");
    while($data=mysql_fetch_array($hent)){
        $out .="<tr><td valign=\"top\"><font class=\"uppercase\">Besked fra </font>".$data[name]."</td></tr>";
        $out .="<tr><td>".$data[message]."</td></tr>";
        $out .="<tr><td><img src='images/spacer_white.gif' width='10' height='10'></td></tr>";
    }
$out .="</table>";   

echo $out;    ?>
</body>
</html>

Håber der er nogen der kan hjælpe!
Mvh
Simon
Avatar billede olebole Juniormester
29. maj 2006 - 09:56 #1
<ole>

Hvis man kan skrive i gæstebogen, kan man naturligvis spamme den. Jeg er ikke helt sikker på, hvad du mener  :)

/mvh
</bole>
Avatar billede kamiga Nybegynder
29. maj 2006 - 10:07 #2
Du kunne evt. sætte på med hvor "tit" man kan skrive i din gæstebog..
Det kunne være en metode
Avatar billede gizmo-gizmo Nybegynder
29. maj 2006 - 10:30 #3
Nogle benytter sådan et system hvor der er et billede af et tal, og så skal man gengive det i et felt. Du kunne jo gøre det samme. Eller lave et felt der heder "hvad giver 2+2", det kan almindelige mennesker selvfølgelig godt svare på, men det kan robotter der spammer din gæstebog ikke (hvis det da er robotspam vi snakker om?).
Avatar billede nomisweb Nybegynder
29. maj 2006 - 10:35 #4
Ole: ja det er selvfølgelig rigtigt at alle kan skrive alt muligt i den, siden det er en gæstebog. Jeg tvivler dog på at det er nogen der gider og side og skrive et tilfældigt navn samt nogle links til mærkelige sites!
Så dvs jeg tror det er en robot!

Dette er et eksempel på hvad der har stået:
Fra: attorney
http://california-attorney.groupfreevideos.info california attorney[link]

Lidt ufedt!

Kamiga: hvordan sætter man begrænser man hvor tit der kan skrives?
Men hvis man begrænser hvor tit det kan lade sig gøre kan det vel være atnogle bliver forhindret i at skrive i den! Det er vel ik så fedt?!
Avatar billede nomisweb Nybegynder
29. maj 2006 - 10:38 #5
Hvis man laver sådan et billede med tal/bogstaver som en slags adgangs kode for at skrive i gbogen, skal det så være mange forskellige, eller kan det godt bare altid være det samme?

Har spam tingen noget at gøre med den server sitet ligger på?
Avatar billede zacho112 Nybegynder
29. maj 2006 - 10:39 #6
Jeg ville gøre ligesom kamiga har skrevet, ved at skriv at de fx, ikke må poste 2 gange inden for samme minut.
Og jeg tror jeg ville lave det sådan her:
$ipen = $_SERVER["REMOTE_ADDR"]; // henter brugernes ip
$now = date('j M Y H i'); // henter datoen, find mere om den på php.net
$query = "SELECT * FROM dindb"; // husk at skifte db
$results = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($results);
if ($row["now"] == $now AND $row["ip"] == $ipen) {
header("Refresh: 2; URL=til-din-side.php"); // skift din side
echo "Du må ikke poste så ofte!";
} else { // resten af din kode
------------------------------------
Når du så poster skal du huske at indsætte brugernes ip, og tiden han poster.
Tiden skal være i samme format som den som jeg bruger i $now, eller du kan ændre $now så den passer med den måde du smider tiden ind på.
(Koden er ikke testet, har brugt den for længe siden)

Håber du kan få det til at virke, ellers skriv så hjælper jeg gerne!
Avatar billede olebole Juniormester
29. maj 2006 - 10:42 #7
Du kan ikke sætte tidsbegrænsning på uden at risikere at udelukke andre, der ikke vil spamme - og det er hamrende nemt at omgå for den, der vil spamme.

Det eneste fornuftige, du kan gøre, er at gøre, som gizmo-gizmo skriver - og så have mindst 10 billeder at vælge tilfældigt imellem  :)
Avatar billede zacho112 Nybegynder
29. maj 2006 - 10:48 #8
Olebole, hvorfor kan man ikke det?? Det eks. jeg gav, der blokker du ipen i et minut.
Og hvis der sidder flere med samme ip, fx på en skole osv. så må de vente et minut hvis det er.
Avatar billede olebole Juniormester
29. maj 2006 - 10:51 #9
Ja, og jeg går bare gennem en proxy-server (dem er der bunker af på WWW til gratis afbenyttelse) og spammer alt det, jeg vil. Det er derfor, den anden løsning altid vælges i professionelle sammenhænge  :)
Avatar billede mclemens Nybegynder
29. maj 2006 - 10:52 #10
Hvad med sådan noget her?

Ind i head:
<script type="text/javascript">
window.onload=function(){document.getElementById("jsbrowser").value="jsbrowser";}
</script>

I formen:
<input id="jsbrowser" type="hidden" name="browsok" value="nojsbrowser">
... Samt en tekst bemærkning om at javascript kræves...

Og en kontrol ved post på:
if($_POST['browsok']=="jsbrowser"){/* Indsæt i gæstebog */}
else{echo"Fejl Javascript kræves";}


... Det burde hjælpe lidt på en del bots...
- da du kontrollerer om botten kan javascript :)
Avatar billede olebole Juniormester
29. maj 2006 - 10:54 #11
- og du kan være 99,9% sikker på, at botten ikke kan JS  ;o)
Avatar billede mclemens Nybegynder
29. maj 2006 - 10:54 #12
hmm, gizmo's er nok bedre :)
Avatar billede mclemens Nybegynder
29. maj 2006 - 10:55 #13
hov, ok :)
Avatar billede olebole Juniormester
29. maj 2006 - 10:57 #14
- men jeg tror nu alligevel, jeg ville vælge gizmo's. Evt. kan man lade GDLib udskrive et billede med en tilfældig tekst på en lidt rodet baggrund, så 'text-bridge' software ike kan læse billedet
Avatar billede olebole Juniormester
29. maj 2006 - 10:59 #15
Selvom det sidste nok er både 'seler og livrem' ... på linje med at gå udfra, at botten kan læse JS  :)
Avatar billede mclemens Nybegynder
29. maj 2006 - 11:09 #16
[ - men jeg tror nu alligevel, jeg ville vælge gizmo's. ]
^ - Det ville jeg også (så bare ikke gizmo's før efter postning af js indlægget) :)
... Pas på ikke at billedet bliver for utydeligt, ellers straffer du svagtseende / farveblinde ;)
Avatar billede nomisweb Nybegynder
29. maj 2006 - 11:18 #17
OK fedt med alle de indlæg! Nu skal jeg jo bare igang med at lave det!
Ole det der GDlib hvad er det? (gdlib.com??)
Og jeg sætter det bare op som om det var et pasword ik os?!
Avatar billede olebole Juniormester
29. maj 2006 - 11:31 #18
GDLib er sikkert allerede installeret på serveren, hvis det er alm. PHP-webhotel - det ligger her:
    http://www.boutell.com/gd/

- og php.net beskriver også dets properties og metoder.

Serveren skal naturligvis kende ordet, du indsætter, så den kan genkende det, når data fra formen modtages. Du kan f.eks. lægge det i en session
Avatar billede gizmo-gizmo Nybegynder
29. maj 2006 - 11:33 #19
Er GDlib ikke en smule overkill til formålet hvis man er nybegynder?  Det ville nok være hurtigere at lave nogle billeder i photosho/paint og så skifte mellem dem.
Avatar billede olebole Juniormester
29. maj 2006 - 11:34 #20
gizmo >> jo, det har du nok ret i  :)
Avatar billede nomisweb Nybegynder
29. maj 2006 - 13:02 #21
har lige tjekket det lidt ud og ja helt sikkert nemmere bare at lave billederne i ps! :-) Men tak for linket.

tak for den hurtige hjælp!

Gizmo lægger du et svar, synes også at olebole sku ha nogle point for al hjælpen, selv om det er gizmo der først sagde det!

tak for hjælpen.
Avatar billede gizmo-gizmo Nybegynder
29. maj 2006 - 13:12 #22
:-) velbekomme
Avatar billede olebole Juniormester
29. maj 2006 - 18:25 #23
Jeg strikkede vist bare lidt med den tråd, gizmo spandt så nydeligt - så jeg hopper let og elegant over denne gang ... men tak for tanken  ;o)
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