Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nadpisywanie zmiennej sesyjnej
Forum PHP.pl > Forum > PHP
a79rtur
czesc. mam nastepujacą sytuacje: server ma wlaczone register globals i nie ma mozliwosci ich wylaczenia. jest zmienna w adresie powiedzmy o nazwie $zmienna i zmienna sesyjna o tej samej nazwie jest nadpisywana przez zmienną w adresie ? jak zrobic zeby tak sie nie działo poza oczywistym sposobem jak zmiana nazwy którejs z nich smile.gif
crash
Nie da rady. Taka jest już "zaleta" register_globals.
dr_bonzo
Ale przeciez nadal mozesz sie odwolac do $_SESSION[ 'zmianna' ] (ew. HTTP_...)?
hawk
Dokładnie. register_globals samo w sobie nie jest żadnym problemem. Problemem jest głupota ludzi którzy tego używają.
Wystarczy, że olejesz kompletnie ten "feature" i będziesz przykładnie używał $_POST itd. No, prawie wystarczy winksmiley.jpg. Oprócz tego musisz inicjować wszystkie "normalne" zmienne, żeby ktoś ci nie zrobił variable poisoning.
a79rtur
Cytat
Oprócz tego musisz inicjować wszystkie "normalne" zmienne, żeby ktoś ci nie zrobił variable poisoning.

inicjowac? tzn jak ?
crash
Np. zmienne post: $dana = $_POST['dana'];...
hawk
Nie, chodziło mi o coś innego. Np:
  1. <?php
  2. if (userIsLoggedIn()) {
  3. $foobar = true;
  4. }
  5. //...
  6. if ($foobar) {
  7.  //ok, logged in
  8. }
  9. ?>

To by była katastrofa z register_globals, bo zawsze można wpisać w przeglądarce www.example.com/index.php?foobar=1. Innymi słowy, trzeba szczególnie uważać, żeby nie używać zmiennych, które mogą być niezainicjowane przez skrypt. Taka praktyka zawsze jest zła, ale tutaj jest szczególnie zła.
W powyższym przykładzie trzeba dodać "else $foobar = false" lub "if (!empty($foobar))".
a79rtur
czyli np. dostaje login i haslo z formularza np. $_POST['login'], $POST['haslo']
i sprawdzam pozniej w zapytaniu mysql czy są poprawne.
to powinienem ja przypisac do jakis zmiennych np. $login=$_POST['login'] czy sie odwoływac przez $_POST['login'] ?
crash
Obojętnie, wygodniej chyba przypisać do $login...
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.