Avatar billede smolle Nybegynder
25. juni 2010 - 14:45 Der er 3 kommentarer og
1 løsning

Brug af '-tegnet i brugerinput

Jeg sidder og arbejder på min hjemmeside og har i den forbindelse flere forskellige steder hvor brugerne kan indtaste data (kommentarbokse, gæstebog, kalender og lign.), hvilket jeg har lavet mange gange før. Jeg er dog først lige i dag blevet opmærksom på et problem med den måde jeg skriver data ind i min database på. Jeg bruger en MySQL query og har altså eksempelvis en linje der ser således ud:

mysql_query("INSERT INTO calendar (day, month, year, headline, description) VALUES ('$day', '$month', '$eventYear', '$eventHead', '$eventDesc')") or die('error making query');

Det fungerer også fint nok i langt de fleste tilfælde, men der kommer et problem så snart brugerne skriver tegnet ' i deres input. Gør de dette får jeg en "error making query" fejl, hvilket jo må skyldes at '-tegnet ødelægger min query og dermed gør kaldet ugyldigt. Jeg har også brugt formatet hvor jeg skriver VALUES (". $day .", ". $month .", osv., men problemet er det samme. Hvad gør man for at undgå denne fejl?

P.S.: Jeg beklager hvis dette spørgsmål skulle have været postet under MySQL, men tænkte at problemet måske kunne løses med en PHP-funktion der indsatte et \ foran alle forekomster af '. Ville det virke?
Avatar billede coderdk Praktikant
25. juni 2010 - 15:09 #1
Avatar billede mike1963 Nybegynder
25. juni 2010 - 15:15 #2
Brug 2 styk '' så æder systemet den ene og RDMS får den anden

fx $thisRow = str_replace("'","''",$thisRow);

altid et problem ;o)

du kan også sende en kommando ESCAPE // så er det / der begrænser/afgrænser input

men det gøres mest i konsolen ...
Avatar billede smolle Nybegynder
25. juni 2010 - 15:19 #3
Mange tak, det var lige det jeg manglede! Jeg var bare ikke klar over hvad jeg lige skulle søge efter på Google for at finde svaret på mit spørgsmål. Du får point med det samme :)
Avatar billede smolle Nybegynder
25. juni 2010 - 15:20 #4
Så først din besked bagefter, mike. Den virker sikkert også, men coder's svar var lige hvad jeg manglede. Men tak for indsatsen alligevel.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester