Zasadniczo to wiem, co te dwie rzeczy robią i z grubsza się pokrywają. I stąd moje pytanie - która opcja jest lepsza/polecana, albo z której lepiej nie korzystać, bo jest obsolete czy deprecated ;)
Porobiłem kilka testów, przejrzałem net i nie znalazłem odpowiedzi, która opcja jest lepsza, z której powinienem skorzystać (albo inaczej - której lepiej unikać). Mam aktualnie zrobiony prosty router - wszystkie wejścia na stronę trafiają do index.php
(technicznie rzecz biorąc, ten plik nazywa się u mnie inaczej, ale nie ma to tutaj żadnego znaczenia). I potem muszę przetworzyć URL wprowadzony przez usera i na tej podstawie wykonać pewne akcje. Niestety, oba sposoby działają prawie tak samo i nie wiem, którą wersję wybrać - czy $_SERVER
czy tradycyjnie $_GET
.
Powiedzmy, że w przeglądarce wpiszę https://jakas.domena/raz/dwa/////trzy/cztery////piec?dupa=kaczuszka
(te nadmiarowe ukośniki to celowo - bo testowałem wieeeele różnych wariantów, w których może wyjść różnica miedzy tymi dwiema opcjami).
$_SERVER['REQUEST_URI'];
zwraca /raz/dwa/////trzy/cztery////piec?dupa=kaczuszka
$_GET['path'];
zwraca raz/dwa/trzy/cztery/piec
Czyli efekt prawie taki sam - pierwsze przekazuje dosłownie to, co zostało wpisane do przeglądarki, opcja druga wywala ukośnik z początku oraz wszystkie zduplikowane i odcina wartości przekazywane w URL'u. Pierwsze przekazuje ścieżkę razem z wartością dupa
, a w drugim przypadku trzeba skorzystać z $_GET['dupa'];
. Szukając różnic sprawdziłem też przesyłanie wartości przez $_POST
, ale to także działa, więc naprawdę, nie mam pomysłów, co jeszcze sprawdzić.
To, co napisałem powyżej to jest raczej kosmetyka, mi się bardziej podoba drugi wariant. Ale może są jakieś powody/okoliczności o których nie wiem i które wskazują, że lepiej jest skorzystać z konkretnego wariantu - np. bezpieczeństwo, planowany brak wsparcia, jakiś brak kompatybilności itp. Wszystkie sugestie mile widziane.