Bepaalde tekens niet invoeren in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gifo

Gifo

16/01/2006 00:24:00
Quote Anchor link
Hoi,

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?
 
PHP hulp

PHP hulp

24/11/2024 15:19:29
 
Jan Koehoorn

Jan Koehoorn

16/01/2006 00:26:00
Quote Anchor link
Eén oplossing is om htmlspecialchars te gebruiken.
 
Gifo

Gifo

16/01/2006 00:30:00
Quote Anchor link
Nou ben ik nog erg nieuw met php. Is daar ook iets van een tutorial van ofzo hoe ik dat moet gebruiken?
Kan het zo gauw niet vinden.
 
Jan Koehoorn

Jan Koehoorn

16/01/2006 00:34:00
Quote Anchor link
Het komt er op neer dat er iets moet gebeuren met lastige tekens, zoals enkele en dubbele aanhalingstekens.

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.
 
Kalle P

Kalle P

16/01/2006 00:36:00
Quote Anchor link
stripslashes(), die zorgt dat alle backslashes worden verwijderd.
 
Jan Koehoorn

Jan Koehoorn

16/01/2006 00:41:00
Quote Anchor link
@ 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.
 
Kalle P

Kalle P

16/01/2006 00:45:00
Quote Anchor link
Dank voor de informatie.
 
Gifo

Gifo

16/01/2006 07:44:00
Quote Anchor link
Idd, hartelijke dank voor de info!
 
Gifo

Gifo

16/01/2006 08:07:00
Quote Anchor link
Ik heb het zojuist getest. Dubbele quots worden inderdaad omgezet in "

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.....
 
Erik Rijk

Erik Rijk

16/01/2006 08:35:00
Quote Anchor link
Ik heb weing / geen verstand van regex maar volgens mij iets in deze richting....
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';
}
 
Jan Koehoorn

Jan Koehoorn

16/01/2006 08:44:00
Quote Anchor link
@ Gifo: dan gewoon addslashes gebruiken.
 
Lissy Pixel

Lissy Pixel

16/01/2006 10:29:00
Quote Anchor link
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....)
 
Robert Deiman

Robert Deiman

16/01/2006 10:40:00
Quote Anchor link
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....)

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
 
Jelmer -

Jelmer -

16/01/2006 11:33:00
Quote Anchor link
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
 
Robert Deiman

Robert Deiman

16/01/2006 11:44:00
Quote Anchor link
Idd een foutje Jelmer, ik heb het aangepast.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.