Avatar billede bas Forsker
05. juni 2007 - 16:26 Der er 11 kommentarer og
1 løsning

Undgå specielle tegn i gæstebog?

Hej

Jeg har en gæstebog, som umiddelbart fungerer meget fint.
Men af og til bliver der jo postet spam-indlæg, som man
ikke er interesseret i.

Der for nyligt kommet et indlæg, hvor der bare står:
<a href= ></a>

Jeg gætter på, at det er et forsøg på spam.

For at forsøge at undgår det fremover vil jeg indsætte et script, der gør det umuligt at oprette indlæg som indeholder
følgende:

http
(www)
<
>
{
}
[
]

andre?

Jeg har indsat nedenstående script, der forhindrer http, men
kan man tilføje de øvrige tegn i det script?

$SpamErrorMessage = "URL'er ikke tilladt <a href='skriv.php'>Tilbage</a>.";

if (preg_match("/http/i", "$navn")) {echo "$SpamErrorMessage"; exit();}
if (preg_match("/http/i", "$epost")) {echo "$SpamErrorMessage"; exit();}
if (preg_match("/http/</i", "$besked")) {echo "$SpamErrorMessage"; exit();}

Jeg er blevet foreslået et par andre scripts - se nedenstående
- men der er probemer med synrtaksen, og jeg ved ikke, hvordan
den rettes.

"Du kan bare køre en
$message = strip_tags($message);
så er de normale tags ude af verdenden  :)

Så mangler du bare at fjerne alle [ ] og { }

$message = preg_replace(´/\[(.*?)\]|\{(.*?)\}/si´,´´,$message);
Noget ala denne skulle gerne fjerne alle [ ] og { } inkl indhold.
/si = s er så den kigger på flere linjer, rigtig godt ved textarea fx."

Er der nogen, der kan hjælpe mig?

På forhånd tak.

Med venlig hilsen
Martin
Avatar billede jakobdo Ekspert
05. juni 2007 - 16:34 #1
Du kan starte med at kigge på strip_tags() og derudover prøve at kigge på captcha, da en computer så ikke bør kunne lave et indlæg.
Avatar billede masik7 Nybegynder
05. juni 2007 - 17:42 #2
http://www.eksperten.dk/spm/758665 - kig lidt på min løsning. ;)
Avatar billede bas Forsker
05. juni 2007 - 19:31 #3
Tak for jeres indlæg, men nu forsøger jeg mig i stedet med - vha. javascript -  at forhindre, at tegnene bliver indtastet.

Jeg har et script, hvor jeg har skrevet:

if (guestform.besked.value == { || } ) {
alert ("Feltet kan ikke indeholde { eller }.")
          guestform.besked.focus()
          return false
          }             
Men jeg får fejlen....

Expected identifier, string or number

...og det er i linjen med if (guestform.besked.value == { || } ) {

Er det ikke muligt at validere for tegn på den måde, eller mangler
jeg bare at tilføje noget?
Avatar billede jakobdo Ekspert
05. juni 2007 - 21:33 #4
Javascript kan du ikke regne med!
Alle kan lave en form, og sætte action="http://www.dinside.dk/gem_i_guestbook.php" og smide det data dertil, som de ønsker.
Avatar billede bas Forsker
14. juni 2007 - 18:25 #5
Hej

Jeg har fået hjælp til et javascript, der ser ud til virke.
Scriptet ser sådan ud:

function submitIt(guestform) {

/* tjekker om der er tastet { eller }  i feltet. */

var value = document.forms['guestform'].elements['besked'].value;
if (value.indexOf("{") >= 0 || value.indexOf("}") >= 0) {
  alert("Feltet må ikke indeholde { eller }")
guestform.besked.focus()
return false
}

men som du jakobdo - skriver, så burde jeg nok prøve
at lave et tilsvarende script i php.

Du skriver. at jeg kan prøve at kigge på strip_tags(),
men jeg har ikke så godt styr på, hvordan man f.eks. validerer
for tegn i php. Kan jeg indsætte de uønskede tegn
i strip_tags() - funktionen og så lave en if-sætning, der enten
poster eller blokerer, og hvordan er syntaksen?

På forhånd tak.

Mvh. Martin
Avatar billede jakobdo Ekspert
14. juni 2007 - 18:35 #6
strip_tags() fjerner alle tags, f.eks.:
<script>alert('hej');</script>
eller
<a href="http://www.spam.dk">SPAM</a>
Sådanne tags vil blive fjernet.
Avatar billede bas Forsker
14. juni 2007 - 18:53 #7
Ok, så funktionen fjerner "bare" tagene og poster alt der ikke indeholder tags i den pågældende besked?
Kan man ikke få det til at blokere helt, hvis beskeden indeholder disse tegn?
Avatar billede jakobdo Ekspert
14. juni 2007 - 19:15 #8
Så skal det være noget i stil med:

if (preg_match('/\<|\>/', $tekst_fra_formen)) {
    echo 'Det skal ikke gemmes';
} else {
    echo 'Det er ok at gemme';
}
Avatar billede bas Forsker
14. juni 2007 - 19:22 #9
Ok tak, men jeg tror bare jeg indtil videre bare holder mig til javascript-løsningen og ser, om det umiddelbart er nok.

Smid et svar, hvis du vil have points ;-)

Mvh. Martin
Avatar billede jakobdo Ekspert
14. juni 2007 - 19:45 #10
Svar.
Avatar billede bas Forsker
14. juni 2007 - 20:02 #11
Takker for hjælpen.

Med venlig hilsen
Martin
Avatar billede jakobdo Ekspert
14. juni 2007 - 20:08 #12
takker for point.
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