Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Bezpieczeństwo - formularze
Forum PHP.pl > Forum > Przedszkole
permanent
Mam dosyć głupie pytanie, otóż czy takie coś:

  1.  
  2. if(!empty($_POST['username']) && !empty($_POST['email']) && !empty($_POST['kod']))
  3. {
  4. ...
  5. }
  6.  


Czy to jest w jakiś sposób niebezpieczne dla mojego skryptu? Oczywiście w zapytaniach do bazy robie filtrowanie.

Czy muszę robić coś takiego:
  1. $post1 = addslashes($_POST['username']);
  2.  
  3. if(!empty($post1) ...

?

Niby błahostka ale wole się upewnić dla bezpieczeństwa.
pmir13
Jeśli jakaś zmienna będzie empty to addslashes na niej nic nie zmieni. Empty sprawdza jedynie czy jest tam 0 czy nie dla liczb, pusty string czy inny dla stringów itp.
permanent
Chodzi o to, że jeżeli ta zmienna NIE JEST pusta to wykonuj coś dalej - !empty
pmir13
Przecież pytałeś czy empty jest bezpieczne. Dostałeś odpowiedź że empty tylko sprawdza czy w zmiennej coś jest czy nie ma, więc jak może być niebezpieczne?
Po co tłumaczysz oczywisty kod?
wNogachSpisz
Co ciekawe
  1. string(1) '0'

empty() zwraca TRUE tongue.gif
pmir13
Szczerze nie rozumiem tej konstrukcji.
Chyba że chodzi o:
  1. $str='0';
  2. echo empty($str[1]);

Wtedy nie ma w tym nic dziwnego, bo w $str[0] jest '0', natomiast w $str[1] jest NULL (bo to zły offset).
krzotr
http://pl2.php.net/empty

Zobacz kiedy zwraca FALSE
wNogachSpisz
Dla mnie to jest nieporządane zachowanie.
Ja to widzę jako string o długości 1 bajta.
Skoro '0' to dlaczego nie '00' albo '0.0' albo '-1' albo '-2' ?
No ale cóż, rozumiem że to rezultat polityki "luźnego" traktowania typów danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.