Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] $_REQUEST a bezpieczeństwo
Forum PHP.pl > Forum > Przedszkole
Jarod
W jednym z artykułów http://www.webinside.pl/php/artykuly/197 przeczytać można, że nie zaleca się stosowania tej tablicy. Co o tym myślicie?

Przecież zamiast
  1. <?php
  2. if ( !empty($_POST['dzien']) )  $dzien  = $_POST['dzien'];  else $dzien  = $_GET['dzien'];
  3. if ( !empty($_POST['miesiac']) ) $miesiac = $_POST['miesiac']; else $miesiac = $_GET['miesiac'];
  4. if ( !empty($_POST['rok']) )  $rok  = $_POST['rok'];  else $rok  = $_GET['rok'];
  5.  
  6. if ( !empty($dzien) )  $data['mday'] = intval($dzien);
  7. if ( !empty($miesiac) ) $data['mon'] = intval($miesiac);
  8. if ( !empty($rok) )  $data['year'] = intval($rok);
  9. ?>


można użyć:
  1. <?php
  2. if ( !empty($_REQUEST['dzien']) )  $dzien  = $_REQUEST['dzien'];
  3. if ( !empty($_REQUEST['miesiac']) ) $miesiac = $_REQUEST['miesiac'];
  4. if ( !empty($_REQUEST['rok']) )  $rok  = $_REQUEST['rok'];
  5.  
  6. if ( !empty($dzien) )  $data['mday'] = intval($dzien);
  7. if ( !empty($miesiac) ) $data['mon'] = intval($miesiac);
  8. if ( !empty($rok) )  $data['year'] = intval($rok);
  9. ?>
nospor
Prawda jest taka ze sie nie zaleca jej używania i mają rację. Chyba ze programista robi to zupełnie świadomie i ma w tym swój cel (a zdarzają sie takie sytuacje).
Jednak gdy wiesz, ze pewne dane mają iść postem, to uzywasz $_POST. Gdy inne maja isc w url, to uzywasz $_GET.
cadavre
Nie winno stosować się REQUESTa gdyż ten przechwytuje wszystkie dane o określonej nazwie - tak więc gdy wysłane zostaną równocześnie np. $_FILES i $_POST o takich samych nazwach powstanie konflikt.
Jarod
Rozumiem, ale ja zmieniam nazwy zmiennych dla różnych skryptów, konflikt nie powstanie. A takie rozwi±zanie zaoszczędza czas i skraca kod, bo w skrypcie muszę sprawdzać czy dane zostały przesłane $_POST czy $_get. Zwi±zane jest to z tym, że z formularza (np. szukaj w bazie czegoś) dane przesyłane są POSTem ale użytkownik wracając z wyników przesyła GET. Czy oprócz konfliktu zmiennych są jakieś inne niebezpieczeństwa?
Cysiaczek
Gdzie widzisz problem? W tym, że masz ścisły podział na GET i POST? To jest złe? Niewygodne? Oj. Jest dokładnie odwrotnie. Jeśli używasz GET i POST, to zawsze wiesz, gdzie ewentualnie szukać problemów. REQUEST już tego nie gwarantuje. Uzywanie go raczej zaciemnia kod i kiedyś może sie nieprzyjemnie odbić.
REQUEST jest tak somo bezpieczne jak POST i GET.

Pozdrawiam.
Jarod
Cytat(Cysiaczek @ 28.07.2006, 12:30 ) *
Gdzie widzisz problem? W tym, że masz ścisły podział na GET i POST? To jest złe? Niewygodne?

Ja tego nie powiedziałem. Tylko w moim przypadku użycie REQUEST skraca kod i jednocześnie czas wykonywania. Tu ułamek, tak ułamek sekundy i się zbiera. Poprostu tak jak podałem w kodzie (dotychczasowy kod) muszę sprawdzać GET i POST a tak mam po kłpocie.

Cytat(Cysiaczek @ 28.07.2006, 12:30 ) *
REQUEST jest tak somo bezpieczne jak POST i GET.


dziękuje.

Pozdrawiam
Kicok
Jeśli ten rok, miesiąc i dzień przesyłasz do skryptu przez pasek adresu, to nie musisz sprawdzać $_POST.
Jeśli ten rok, miesiąc i dzień przesyłasz do skryptu za pomocą jakiegoś formularza, to nie musisz sprawdzać $_GET
Jeśli chcesz, żeby dało się ten rok, miesiąc i dzień wysłać zarówno przy pomocy formularza jak i przy pomocy paska adresu, to możesz używać $_REQUEST, albo zainteresować się takimi konstrukcjami:

  1. <?php
  2. $rok = (isset($_POST['rok']) ? $_POST['rok'] : $_GET['rok']);
  3. ?>

  1. <?php
  2. $rok = $_POST['rok'] or $rok = $_GET['rok'];
  3. ?>
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.