pozmu.net::blog

Blog porzeraczamuzguw

Obejście wyłączonego register_globals w PHP

Ok, jak wiadomo od którejś tam w wersji w PHP wyłączone jest domyślnie register_globals, co zmusza nas do korzystania ze zmiennych zawartych w tablicach typu _POST, _GET itp. co nie jest fajne. W wielu przypadkach można to zmienić ingerując w ustawienia serwera, co często da się osiągnąć nawet z poziomu skryptu PHP. Jednak jest to o tyle niefajne, że nie zawsze się to da zrobić. Rozwiązanie:

if (!ini_get('register_globals')) {
while (list($key, $val) = @each($_GET)) $GLOBALS[$key] = $val;
while (list($key, $val) = @each($_POST)) $GLOBALS[$key] = $val;
while (list($key, $val) = @each($_COOKIE)) $GLOBALS[$key] = $val;
while (list($key, $val) = @each($_FILES)) $GLOBALS[$key] = $val;
while (list($key, $val) = @each($_SESSION)) $GLOBALS[$key] = $val; }

Należy coś takiego umieścić na początku naszego pliku ze skryptem i powinien on bezproblemowo działać nawet przy register_globals 0. Najłatwiej zapisać to w oddzielnym pliku i dołączać na początku skryptów za pomocą instrukcji include().
(znalezione na ldev.com/forums)

Jeśli uważasz, że ta strona zawiera przydatne lub ciekawe informacje, namawiamy do umieszczenia prowadzącego do niej linka na własnej witrynie WWW.
Aby to zrobić po prostu skopiuj widoczny poniżej kod i wklej na swoją stronę (Naciśnij CTRL+C aby skopiować).
Link będzie wyglądał tak: Obejście wyłączonego register_globals w PHP

3 komentarze

  1. xyan powiedział:

    można prościej z $_REQUEST, chociaż… mogę się mylić ;P

    pozdrawiam

  2. pozmu powiedział:

    Częściowo tak:

    „Request variables: $_REQUEST
    An associative array consisting of the contents of $_GET, $_POST, and $_COOKIE.”
    http://www.php.net/manual/pl/reserved.variables.php

  3. Mateusz powiedział:

    w końcu udało mi się znaleźć świetną radę… ta funkcja uratowała mi życie!

Dodaj komentarz

Proszę zauważ: Moderacja komentarzy jest włączona i może opóźnieć pojawienie się twojego komentarza na stronie. Nie ma potrzeby wysyłania twojego komentarza ponownie.