Hmmm,
Sincer nu am crezut ca o sa fie vreo porblema dar asta e.
Eu am instalat un apache2 si banuiesc ca undeva prin fila lui e setat astfel incat daca la o variabila care sa spunem se numesthe : num'e o transforma automat in :num\'e
Stie cineva de unde vine chestia asta?
Si apropo in afara de str_replace are php ceva chestie care sa transforme caracterele speciale automat in \' sau \" sau ma rog ce trebe daca mai e ceva?
Caractere speciale
Moderatori: Zamolxe, Moderatori
-
Emil
- PHPRomania Coder Professional
- Mesaje: 300
- Membru din: Dum Noi 16, 2003 6:33 am
- Localitate: echo $REMOTE_ADDR
o variabila nu se poate numi num'e pentru ca nu sunt permise astfel de caractere in denumirea unei variabile . Daca te referi la valoarea ei (un string) atunci pentru tratarea string-urilor cu ghilimele folosesti addslashes care face exact ce zice numele ei , adauga slash-uri in fata fiecarei ghilimele .
mai multe despre functie si despre magic_quotes_gpc
mai multe despre functie si despre magic_quotes_gpc
It's time for me to find a new hobby. Preferably one that doesn't involve angle brackets. Or computers. Or electricity.
- emedgidia
- Junior Member
- Mesaje: 46
- Membru din: Vin Apr 30, 2004 2:46 pm
- Localitate: Bucuresti
- Contact:
Emil are dreptate. O variabila nu poate contine caractere precum ', ", \, /, <, >, {, } etc. Citeste definitia si denumirea variabilelor .
addslashes() se foloseste atunci cand trebuie sa cureti un sir de ghilimele simple si duble, respectiv slash-uri pentru a-l introduce in baza de date, deoarece MySQL nu ar recunoaste sirul corect.
Perechea este stripslashes().
addslashes() se foloseste atunci cand trebuie sa cureti un sir de ghilimele simple si duble, respectiv slash-uri pentru a-l introduce in baza de date, deoarece MySQL nu ar recunoaste sirul corect.
Perechea este stripslashes().
Fiecare programator este diferit in felul lui!!!
-
Radical
- Senior Member
- Mesaje: 327
- Membru din: Lun Feb 16, 2004 2:40 pm
- Localitate: Bucuresti
- Contact:
Re: Caractere speciale
Sa presupunem ca utilizatorul iti introduce in INPUT de tip text "num'e".
Browserul face urlencode si trimite catre apache-ul tau "num%27e" apache preia face urldecode si trimite catre PHP "num'e"... acuma daca PHP are in php.ini setat magic_quotes_gpc=1 (default) variabila ta va avea valoarea "num\'e" daca e setat magic_quotes_gpc=0 vei avea "num'e"...
Exista probleme de securitate cu magic_quotes_gpc=0. Pentru ca nu se adauga ghilimele o cerere de genul:
mysql_query("select * from table_name where user='num'e'"); o sa pice... si/sau "utilizatorul" poate altera GET-ul si introduce "num' or '1'='1" si astfel query-ul devine: mysql_query("select * from table_name where user='num' or '1'='1'"); care o sa arate toti utilizatorii din baza de date....
Daca ai magic_quotes_gpc=1 cererea o sa fie mysql_query("select * from table_name where user='num\' or \'1\'=\'1'"); care o sa returneze eroare pentru ca nu cred ca exista un user "num' or '1'='1" ... nu ?
Browserul face urlencode si trimite catre apache-ul tau "num%27e" apache preia face urldecode si trimite catre PHP "num'e"... acuma daca PHP are in php.ini setat magic_quotes_gpc=1 (default) variabila ta va avea valoarea "num\'e" daca e setat magic_quotes_gpc=0 vei avea "num'e"...
Exista probleme de securitate cu magic_quotes_gpc=0. Pentru ca nu se adauga ghilimele o cerere de genul:
mysql_query("select * from table_name where user='num'e'"); o sa pice... si/sau "utilizatorul" poate altera GET-ul si introduce "num' or '1'='1" si astfel query-ul devine: mysql_query("select * from table_name where user='num' or '1'='1'"); care o sa arate toti utilizatorii din baza de date....
Daca ai magic_quotes_gpc=1 cererea o sa fie mysql_query("select * from table_name where user='num\' or \'1\'=\'1'"); care o sa returneze eroare pentru ca nu cred ca exista un user "num' or '1'='1" ... nu ?
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 19 vizitatori