Avatar billede dazzy Nybegynder
04. juni 2010 - 16:27 Der er 14 kommentarer og
1 løsning

HTML specialchars

Hej derude.

Har nogle forms som jeg skriver en tekst ind i hvilket bliver lagt på en database.
Her bruger jeg htmlspecialchars så tingene ses som de skrives ! :)

Når jeg så laver en lille test ogskriver dette:
<table><tr><td>Hej</td></tr></table>.-)[}][76  Hvilket jeg gjorde bare lige for at teste om det virkede.
Dette gjorde det også fint nok i et sted i en text boks hvor jeg fik <table><tr><td>Hej</td></tr></table>.-)[}][76 ud af det også.
Men i en præcis lignende boks fik jeg det som det står i DB altså:
&lt;table&gt;&lt;tr&gt;&lt;td&gt;Hej&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;.-)[}][76

Nogle der kender fejlen??

På forhånd tak
Avatar billede keysersoze Guru
04. juni 2010 - 16:51 #1
Det er en rigtig dårlig idé at ændre brugerinput - data skal gemmes i databasen som de er indtastet. Har du problemer med æøå generelt skyldes det et problem med din character encoding, altså at du kører med forskelligt setup på tværs af database, filer etc.

http://www.eksperten.dk/guide/1300
Avatar billede dazzy Nybegynder
04. juni 2010 - 17:20 #2
Har ingen problemer med æ ø og å,
Vil bare ikke have at hvis min bruger skriver <table color="black"><tr><td>Hej</td></tr></table>
at der så kommer en sort kasse med ordet hej, så skal der stå teksten istedet.
Avatar billede shjorth Nybegynder
04. juni 2010 - 17:44 #3
#1

Er det ikke en sandhed med modifikationer ? Hvad med injections ?
Avatar billede dazzy Nybegynder
04. juni 2010 - 17:47 #4
Ved ikke, bare træls det virker nogen gange, og nogen gange ikk :)..
Avatar billede majbom Novice
04. juni 2010 - 17:47 #5
prøv at kig engang på strip_tags: http://php.net/manual/en/function.strip-tags.php
Avatar billede dazzy Nybegynder
04. juni 2010 - 18:12 #6
Det er selvfølgelig smart nok,
Men hvis nu der bliver skrevet noget, og <A> gerne må være synligt, så funker det jo ikke helt :)
Avatar billede majbom Novice
04. juni 2010 - 18:45 #7
så kunne du gøre det som exp.dk, hvor du laver dine egne tags.

eller hvis det kun er links der skal være tilladte, kan du jo bare fjerne tag'et og når du udskriver teksten senere, lave en funktion, der selv laver adresser om til links.
Avatar billede shjorth Nybegynder
04. juni 2010 - 19:37 #8
En mulighed er vel
str_replace("<","&lt;",$string);
Avatar billede dazzy Nybegynder
04. juni 2010 - 21:14 #9
Ja ville være smart at lave som på eksperten.

Men første problem er lige at få vist <table> som tekst.
Har brugt htmlchars til dette, men af en eller anden grund virker det ikke 100%.
str_replace burde det ikke give samme effekt?? bare på mindre ting ?
Avatar billede shjorth Nybegynder
04. juni 2010 - 21:21 #10
hvis du skriver:

str_replace("<","&lt;",$string);
str_replace("<","&gt;",$string);

når du trækker ud af tabellen, så vil du få

<table> lalal. bla bla.

Hvis det altså er det du vil have :)
Avatar billede dazzy Nybegynder
04. juni 2010 - 21:24 #11
Lig et svar ;)
Avatar billede shjorth Nybegynder
04. juni 2010 - 21:36 #12
Den metode er helt sikkert ikke den rigtige.. strip_tags (http://dk.php.net/strip_tags) vil formentlig gøre det samme, og når en af de hardcore bananer kommer tilbage kan de sikkert slynge noget endnu bedre ud :P

Men jeg ligger et svar, så må vi se ;)

God weekend
Avatar billede shjorth Nybegynder
04. juni 2010 - 21:36 #13
og det var så her :P
Avatar billede majbom Novice
04. juni 2010 - 22:01 #14
jeg havde så ikke fået fat i at du ville beholde <table>, jeg troede du ville fjerne det... så er strip_tags ikke den rigtige metode og jeg ved ikke om htmlspecialchars er det.

men shjorth's løsning er da et gost bud :)
Avatar billede dazzy Nybegynder
04. juni 2010 - 22:05 #15
Nå okay forstod heller ikke hvorfor du villle fjerne dem ;)

Jeg har ihvertfald shjorth's løsning, men vil lige se om jeg kan falde over den "rigtige" måde.

og god weekend :)
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