Caractere speciale

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

iugin
Average Member
Mesaje: 82
Membru din: Joi Mai 22, 2003 1:30 pm
Localitate: Oradea
Contact:

Caractere speciale

Mesajde iugin » Joi Mai 06, 2004 4:46 pm

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?



iugin
Average Member
Mesaje: 82
Membru din: Joi Mai 22, 2003 1:30 pm
Localitate: Oradea
Contact:

Mesajde iugin » Joi Mai 06, 2004 4:55 pm

Altceva in afara de addslashes mai e ceva? Sau daca stie cineva de addslashes ca e cu bug

Emil
PHPRomania Coder Professional
Mesaje: 300
Membru din: Dum Noi 16, 2003 6:33 am
Localitate: echo $REMOTE_ADDR

Mesajde Emil » Joi Mai 06, 2004 7:21 pm

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 ;)

It's time for me to find a new hobby. Preferably one that doesn't involve angle brackets. Or computers. Or electricity.

Avatar utilizator
emedgidia
Junior Member
Mesaje: 46
Membru din: Vin Apr 30, 2004 2:46 pm
Localitate: Bucuresti
Contact:

Mesajde emedgidia » Vin Mai 07, 2004 3:21 am

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().
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

Mesajde Radical » Vin Mai 07, 2004 1:14 pm

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 ?

iugin
Average Member
Mesaje: 82
Membru din: Joi Mai 22, 2003 1:30 pm
Localitate: Oradea
Contact:

Mesajde iugin » Lun Mai 10, 2004 4:01 pm

Mersi pt raspuns.

;) Stiu ca o nuimele variabilei nu poate lua caractere speciale. Era vorba de valoare ei.


Oricum mersi de raspunsuri


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 19 vizitatori