Escaping, slashing og så ikke alligevel.

Tags:    diverse

Hej alle!

Jeg sidder med følgende case:
Der skal laves et admin interface, hvor admins kan skrive en nyhed. Admins må gerne bruge HTML kode.
Der skal også være et kommentar system til brugerne, de må IKKE bruge HTML.

Brugerne er ikke noget problem.
1. Jeg fjerner alle forekomster af \' og \", det gør jeg fordi PHP selv sætter \ foran, men da mit mySQL lag selv sørger for at escape, så vil jeg undgå dobbelt escaping. Det virker fint.
2. Jeg bruger htmlentities for at undgå HTML, inden jeg smider det ind i databasen. Det er også i vinkel.

Admin delen er så den som volder mig problemer. Man ville umiddelbart tro at jeg bare skulle nøjes med step 1. Men når en admin så skal ind og rette i sin tekst for anden gang, så bliver hans HTML jo afviklet på siden, hvor han burde kunne redigere den.
Min første idé var så at escape hans nyhed inden den blev udskrevet i et textarea, men det dur ikke, for når han så anden gang gemmer teksten, så er alt hans HTML lavet om til tags.

Nogen der kan hjælpe? tak.



den her du leder efter?
http://dk2.php.net/htmlspecialchars_decode

<textarea><?php echo(htmlspecialchars_decode($text));?><textarea>



Indlæg senest redigeret d. 31.12.2008 20:25 af Bruger #5620
jeg prøver lige at lege med det, hvis det bare er det, så er det jo næsten pinligt :P
Men har du ikke nogen bud på hvordan man normalt håndterer den slags problemstillinger? Hvordan man gør det på den rigtige måde?



Okay, nu er jeg kommet frem til at det virker helt fint, INDTIL:

En admin laver en tekst med noget HTML kode i.
Da han går ind for at rette i teksten, bruger jeg htmlspecialchars, for at sikre at hans HTML kode ikke "udføres" i et textarea. Han retter i teksten og tilføjer noget nyt. Nu skal jeg så bruge htmlspecialchars_decode for at få teksten tilbage til rigtig HTML, men så kommer problemet. Hvis det nye tekst han har tilføjet indholder, eksempelvis: """, så vil det blive smidt tilbage til en ", men det er ikke hensigtsmæssigt, hvis hans virkelig intention var at lave et gåsetegn, som ikke ødelagde hans HTML kode.



det er så der du skal kigge på 2 parameter af funktionen :D

quote_style
The quote style. One of the following constants:

quote_style constants
Constant Name Description
ENT_COMPAT Will convert double-quotes and leave single-quotes alone (default)
ENT_QUOTES Will convert both double and single quotes
ENT_NOQUOTES Will leave both double and single quotes unconverted






Indlæg senest redigeret d. 02.01.2009 06:22 af Bruger #10647
det er så der du skal kigge på 2 parameter af funktionen :D
...


Nu var gåsetegnet jo blot et eksempel, det gælder jo også alle andre tegn som >,< osv.

Og selvom vi så tager gåsetegnet som eksempel, så vil jeg stadig ikke kunne skelne mellem et gåsetegn, ment som tekst og et gåsetegn, ment som HTML.



Indlæg senest redigeret d. 05.01.2009 12:04 af Bruger #11914
t