Hoe kan ik het beste bijvoorbeeld met een gastenboek de berichten in een database zetten. Ik bedoel dan van hoe moet je het php/html code eruit filteren? En dan later weer alleen de enters eruit filteren en dan de enters op de juiste manier tonenen waar ze horen??
met htmlspecialvars ofzo denk ik?
EN hoe moet ik het veilig in de database zetten?
Als je een MySQL database gebruikt, kan je [php]mysql_real_escape_string[/php]() gebruiken.

Met [php]htmlspecialchars[/php]($sVar, ENT_QUOTES); kan je HTML omzetten.

Als tekst uit een textarea komt, zet je het met de normale EOL tekens in de database (niks aan doen) en kan je de EOL later omzetten in een <br /> met [php]nl2br[/php]()
htmlentities is ook handig, en stripslashes met het uitlezen...
Ja het is een textarea en ook nog wat invulvelden.

Dus als het een textarea is gewoon zo in de database zetten niks aan doen.

Maar hoe moet ik het met gewone invulvelden doen alleen addslashes toch?

En waar moet ik dan mysql_real_escape_string() op toepassen en htmlspecialcahrs??
Je moet bij een textarea niks doen aan de enters, je moet er wel mysql_real_escape_string() overheen gooien, dan moet bijna over alles wat aan user input de database in gaat (getallen etc kan je op een andere manier valideren)

@Erik: let wel op het verschil tussen htmlspecialchars & htmlentities, htmlentities zet niet alle html elementen om!
Boaz schreef op 13.08.2006 20:21
@Erik: let wel op het verschil tussen htmlspecialchars & htmlentities, htmlentities zet niet alle html elementen om!


[php]htmlentities[/php] doet dat toch juist wél en htmlspecialchars niet?
htmlentities(), htmlspecialchars() en nog meer van dit soort functies moet je NOOIT gebruiken bij het opslaan in de database. Je gebruikt deze functies pas nadat je de boel weer hebt opgehaald uit de database, dus na een SELECT.

Waarom? Omdat je de data anders niet/nauwelijks meer kunt gebruiken voor andere toepassingen dan een webpagina. Het zijn tenslotte functies die betrekking hebben op het maken van correcte html-output.

mysql_real_escapte_string() zorgt er voor dat o.a. quotes worden geescaped die in de tekst staan. Gebruik je dit niet, dan loopt je query in de soep.
Maar je kan toch ook addslashes gebruiken maar wanneer moet ik nauw wat gebruiken?

DUs ik moet eerst het alleemaal met addslashes of met mysql_real_escape_string in de database zetten.

En dan moet ik he weer uit de database halen met htmlspeclachars($query) ofoz?
Ik doe het altijd zo:

- Addslashes
- In database
- Uit database natuurlijk (edit) ;)
- stripslashes
- htmlspecialchars
- htmlentities
- eventuele UBB-code
- Echoën

Reageren