Bepaalde tekens niet invoeren in database
Ik heb een formulier waarin mensen zelf een naam in moeten vullen. Als zij hun naam echter invoeren met bijvoorbeeld een ' of een ` dan krijg ik steeds MySQL Syntax errors.
Heeft iemand hier een oplossing voor?
Eén oplossing is om htmlspecialchars te gebruiken.
Kan het zo gauw niet vinden.
Stel je hebt een input type text met name "my_input" in je form.
Die vang je op met $_POST['my_input']. Als je dit doet:
$my_input = htmlspecialchars ($_POST['my_input']);
dan krijg je een string waar alle gekke tekens vervangen worden door hun HTML equivalent.
Hij vervangt bijvoorbeeld een dubbele quote (") door:
"
En het resultaat kun je zonder problemen in je db zetten.
stripslashes(), die zorgt dat alle backslashes worden verwijderd.
@ Kalle: als je strings met quotes erin wilt bewerken voordat ze in je db gaan, moet je juist addslashes hebben. Die escapet keurig alle quotes. Bij het uitlezen van gegevens uit je db moet je dan weer stripslashes gebruiken.
Dank voor de informatie.
Idd, hartelijke dank voor de info!
Een enkele quot wordt echter niet omgezet.
Als er bijvoorbeeld wordt ingevoerd: Jantje's vereniging, dan wordt dat ook zo in de db gezet en dit levert dus een Syntax error op.
Helaas.....
Iemand die er beter mee bekend is moet mijn post maar verbeteren.
if(!ereg(^_A-zA-Z0-9-$+,$_POST['naam']){
$error = 'Je naam bevat ongeldige karakters';
}
@ Gifo: dan gewoon addslashes gebruiken.
(wow lissy is net wakker vandaar....)
lissy:
Yep idd en nooit opgeven want er is niet 1 goede manier maar goed wordt mijnsinziens gedefinieerd wanneer je consequent en consistent elke keer door je programmeren met hetzelfde en tot hetzelfde resultaat komt...
(wow lissy is net wakker vandaar....)
(wow lissy is net wakker vandaar....)
Helemaal mee eens Lissy, PHP is weer zo'n typische taal waarbij verschillende oplossingen mogelijk zijn voor één en hetzelfde probleem. Wanneer je het probleem zelf op verschillende manieren oplost, is het niet goed, want het maakt je code een stuk minder lees- en begrijpbaar. Zorg dat je qonsequent blijft.
Tjah, natuurlijk is het wel goed om een goede afweging te maken tussen verschillende oplossingen. Sommige zijn veel sneller en korter dan andere. En die zou ik dan wel gebruiken.
Gewijzigd op 16/01/2006 11:44:00 door Robert Deiman
Robert:
Wanneer je het probleem zelf op verschillende manieren oplost, is het niet goed, want het maakt je code een stuk beter lees- en begrijpbaar.
Hmmmm... denk-tijdens-het-typen-fout?
Je moet inderdaad 1 manier consistent gebruiken voor de duidelijkheid. Welke manier dat is mag je helemaal zelf bepalen. Zie het als een vleugje persoonlijkheid in je script :)
Voorbeeld:
$req = array();
$req[] = 'iets'; //simpeler te snappen?
array_push($req, 'iets'); //sneller
Idd een foutje Jelmer, ik heb het aangepast.