Enter behouden met htmlspecialchars()
Voordat ik iets in de database zet doe ik altijd htmlspecialchars();
Code (php)
1
2
3
2
3
<?php
$comments = trim(stripslashes(htmlspecialchars(mysqli_real_escape_string($con, $_POST['comments']))));
?>
$comments = trim(stripslashes(htmlspecialchars(mysqli_real_escape_string($con, $_POST['comments']))));
?>
Dit zorgt er helaas voor dat enters worden omgezet in rn ik wil graag dat een enter een enter blijft hoe kan ik dit als beste doen?
Mvg,
Nick
waarom doe je stripslashes?
Had een keer ergens gelezen dat je zo iets goed moest filteren
Je moet wel weten waarvoor je het gaat gebruiken. Als je het niet weet dan heb je er weinig aan.
Persoonlijk ben ik er geen held in, maar ik denk dat stripslashes al meer dan voldoende is.
Dan nog zou ik even aangeven door middel van html5 (pattern) wat wel en niet mag. Op deze manier voorkom je dat de gebruiker dingen opslaat die je niet toestaat. Dit word dan omgezet in rare fratsels als \'of \". (inplaats van zonder de slash er voor)
Gewijzigd op 04/10/2014 22:27:12 door phpnuke r
nl2br
Kijk eens naar Gewijzigd op 04/10/2014 23:06:42 door Peter Flos
Phpnuke r op 04/10/2014 22:24:22:
Dan nog zou ik even aangeven door middel van html5 (pattern) wat wel en niet mag. Op deze manier voorkom je dat de gebruiker dingen opslaat die je niet toestaat.
Een pattern is leuk als service aan de gebruiker, maar je moet het nooit gebruiken als security-maatregel voor je scripting, omdat het zeer eenvoudig te omzeilen is.
Stripslashes moet je hier trouwens gewoon helemaal weghalen.
met alles bedoel ik: je HTML, je Collatie van je database, tabellen en kolommen, en je databaseconnectie.
htmlspecialchars() is een functie die je nodig hebt op het moment dat je iets weergeeft: in een echo of eventueel als je een html-mail samenstelt, of een pdf document.
In elk geval niet bij het opslaan.
htmlspecialchars() heb je vooral nodig om < en > te kunnen weergeven.
Ja, het lijkt misschien handig om dat dan maar direct te doen als je de data opslaat in de database, maar dan beperk je jezelf direct in het gebruik van de data: je kun er niet meer zo maar een plain-tekst mailtje van maken, of een word-document van opstellen. of wat, als je de gebruiker de invoer later wilt kunnen laten aanpassen: dan is een < ineens een < geworden.
--
mysqli-real-escape-string is nodig, om veilig te zijn voor met name ' in je invoer die de query doet mislukken (of erger: iets anders dan bedoeld laat doen)
stripslashes() doet die real-escape actie weer ongedaan!
stripslashes() stamt nog uit een tijd dat er zo'n leuke magic-quotes optie bestond die alle post- en get-parameters van slashes voorzag. Als het goed is, staat dat nu uit op je server.
Zo niet: dan zorgen dat dat wel zo wordt, ipv symptoombestrijding.
trim() kan op zich niet zo'n kwaad: spaties aan begin en eind verwijderen. (mits je zeker weet dat dat geen zinnige spaties zijn.
Bedankt allemaal!