Avatar billede delphinarious Nybegynder
13. juli 2003 - 17:42 Der er 12 kommentarer og
1 løsning

Filtrer HTML-tags væk.

Hej Eksperter.

Jeg sidder lige og arbejder på en gæstebog i PHP og som gemmer indlæg i en MySQL-database. Det går skam godt.
Problemet med min sidste gæstebog, som jeg havde lavet i ASP og med Access, var at folk kunne finde på at spamme den og skrive HTML-tags i den. Den salgs trælse indlæg, vil jeg gerne komme til livs, og jeg vil derfor gerne lave et filter, sådan at alle HTML-tags bliver filtreret væk fra indlægget, og kun den rene tekst står tilbage.

Hvordan i alverden gør jeg det?

Jeg har kigget lidt på ereg_replace, men der skal den vel vide lige præcist hvordan tag'et ser ud? Jeg mener.. Jeg kan godt lave den sådan at <a>-tags bliver filtreret ud, men hvis folk så skriver <a href="minfil.php"> så er fanden jo løs.. Så hvad er løsningen?

Hvis I ikke lige kan give mig en konkret løsning, så vil bare et hint om en funktion der kan bruges eller noget også være fin.

På forhånd tak.
Avatar billede ahv Nybegynder
13. juli 2003 - 17:45 #1
$_POST['msg'] = ereg_replace("<([^>]+)>", "", $_POST['msg']);
Avatar billede delphinarious Nybegynder
13. juli 2003 - 17:50 #2
Super! Det var lige hvad jeg manglede! Tusinde tak. :-)
Avatar billede ahv Nybegynder
13. juli 2003 - 17:50 #3
Og for at være helt sikker på at folk ikke laver ged i din database eller andet ->

$_POST['msg'] = ereg_replace("<([^>]+)>", "", $_POST['msg']);
$_POST['msg'] = addslashes($_POST['msg']);
Avatar billede dmcn Praktikant
13. juli 2003 - 17:59 #4
Hvorfor ikke bruge PHP's indbyggede htmlentities-funktion?
www.php.net/htmlentities
Avatar billede johslind Nybegynder
13. juli 2003 - 21:44 #5
Der er jo også funktionen strip_tags().
Den kan f.eks. se sådan ud:
strip_tags($streng,"<P><BR>");
Det betyder så, at i $streng fjernes alle HTML-tags undtagen P og BR.
Men funktionen har den svaghed, at når den opdager tegnet "<", så vil den strippe alting i linjen, indtil den møder et ">".
Jeg har arbejdet en del med samme problem i min egen gæstebog (se evt. folkemagt.dk), og det eneste tag, jeg for alvor er bange for, er PRE, der vil ødelægge alle mine gode hensigter. De fleste andre tags bliver jo aflyst, når der kommer en ny blok.
Avatar billede tipsen Nybegynder
13. juli 2003 - 23:22 #6
johslind: Hvad er det med at "de fleste andre tags bliver jo aflyst, når der kommer en ny blok" !? Kan du forklare, hvordan det fungerer?
Avatar billede johslind Nybegynder
14. juli 2003 - 08:50 #7
Tipsen:
Et HTML-dokument består af blok-elementer og inline-elementer. Blokelementer kan f.eks. indledes med P, DIV, H3, OL og UL. - Inline-elementer forkommer i linjerne inden for blokkene, f.eks. B, STRONG, og I. Iflg. W3C er det ofte unødvendigt at anføre blokkenes afslutningstegn, idet browserne selv finder ud af, hvornår en blok er slut og en ny begynder.
Men den del af mit indlæg var nok lidt for "flot". For det kan jo kun gælde blokke.
Men prøv at gå ind på min eksperimenterende hjemmeside http://folkemagt.dk og skrive et indlæg i mit forum med html-tags for at se, om den kan holde til det. Jeg vil ligefrem være glad, hvis nogen kan afsløre en svghed.
Avatar billede turbothy Nybegynder
14. juli 2003 - 09:07 #8
johslind: jeg har lige lavet et indlæg på din side - http://folkemagt.dk/debat/flexforum.php?filen=flex2.php&kodeord=&handling=5

Måske skal du ikke tillade iframes? :o)
Avatar billede johslind Nybegynder
14. juli 2003 - 09:27 #9
turbothy:
Tak for checket. - Nej, hvorfor skulle jeg forbyde iframes? - Det er da en berigelse!

Andre: Turbothy's "attentat" findes i en base ved navn flex2. - Ellers må man gerne bruge den, der hedder 'Forklaring'.
Avatar billede b.b Nybegynder
14. juli 2003 - 09:29 #10
OFF TOPIC...

<citat>
Jeg har som webmaster for SF-Esbjerg lovet ATTAC i Esbjerg at stille netplads til rådighed, idet jeg finder, at denne tværpolitiske organisations virksomhed et langt stykke vej er i samklang med SF's.
</citat>

Det mener du vel forhåbentlig ikke...???
Avatar billede turbothy Nybegynder
14. juli 2003 - 09:48 #11
Cut, Elly. Det her er PHP, den der må I tage til privat e-mail eller dk.politik :o)
Avatar billede johslind Nybegynder
14. juli 2003 - 10:20 #12
Jeg har besvaret b.b's indlæg på en mailadresse, som jeg fandt på b.b's flotte hjemmeside. - Men hvem er så Elly?
Avatar billede b.b Nybegynder
14. juli 2003 - 10:23 #13
sorry for spam....
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