Informujemy, że w PHP 5.4 register_globals nie są już dostępne, nie można ich włączyć w żaden sposób.
Jeśli register_globals są włączone, oznacza to, że dane w zmiennych pochodzących z adresu URL z wysłanego formularza (POST) lub z cookies (COOKIE) automatycznie pojawią się jako zmienne globalne w Twoim skrypcie PHP.
Np. jeśli wywołamy nasz skrypt w ten sposób: skript.php?imie=Karel&numer=12345 i register_globals są włączone, mamy dostępne te 2 wartości przez zmienne globalne $imie i $numer.
echo "Twoje imię: $imię<br />" echo "Twój numer: $numer"
Zasada działania jest podobna jak przy przesyłaniu danych za pośrednictwem formularza metodą POST.
Istnieje jednak duże niebezpieczeństwo – przez dodanie dowolnego parametru do adresu URL Twojego skryptu, potencjalny atakujący może umieścić w Twoim programie dowolną zmienną globalną o dowolnej wartości, co może skutkować naruszeniem bezpieczeństwa, uszkodzeniem aplikacji, która się tego nie spodziewa.
Dlatego nie zaleca się używania register_globals w PHP, w kolejnych wersjach opcja ta nie będzie w ogóle dostępna.
Właściwe rozwiązanie
Dane z POST, GET i COOKIE powinny być obsługiwane przez zmienne superglobalne $_POST, $_GET i $_COOKIE.
- $_POST to pole asocjacyjne zawierające dane z przesłanego formularza
- $_GET to pole asocjacyjne zawierające parametry z adresu URL
- $_COOKIE to pole asocjacyjne zawierające dane zapisane w cookies przeglądarki
Poprawiony przykład:
echo "Twoje imię: ".$_GET["imię"]."<br />"; echo "Twój numer: ".$_GET["numer"];
Włączenie register_globals
Jeśli mimo wszystko chcesz skorzystać z register_globals, tj. zobaczyć dane wejściowe POST, GET i COOKIES jako zmienne globalne w swojej aplikacji, masz 2 możliwości:
- Skorzystaj z funkcji import_request_variables(), która pobierze dane i wytworzy zmienne globalne.
- Włącz register_globals w Panelu Klienta w konfiguracji PHP.
Chcemy jednak zdecydowanie podkreślić, że nie zalecamy korzystania z register_globals! Poproś twórcę swojej aplikacji PHP, aby nie korzystał z register_globals, ponieważ jest to niebezpieczne i niekatulane rozwiązanie.