[PHP] Jak pobrać adres strony?
Gdy zajdzie potrzeba pobrania adresu strony, na której użytkownik aktualnie się znajduje mamy możliwość użycia do tego celu tablicy $_SERVER z kluczem 'SERVER_NAME'. Z tablicy $_SERVER możemy wyświetlić takie dane jak adres IP klienta, wersję systemu operacyjnego, nazwę przeglądarki www i wiele innych.
Pobranie adresu strony, na której znajduje się użytkownik sprowadza się dosłownie do połączenia dwóch elementów tablicy $_SERVER - elementu SERVER_NAME oraz REQUEST_URI. Element o kluczu SERVER_NAME zawiera nazwę hosta serwera, na którym wykonywany jest skrypt, a element z kluczem REQUEST_URI pobiera wszystko to, co zostało wpisane po nazwie domeny np. '/index.php'. Tak więc, aby wyświetlić adres strony lub adres do skryptu, łączymy te dwa elementy:
echo $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
Powyższy przykład wyświetli nam URL, pod którym aktualnie się znajdujemy, ale bez przedrostka http/https. Aby do ciągu z URL'em dołączana była nazwa protokołu, musimy użyć jeszcze jednego elementu tablicy $_SERVER, a mianowicie HTTPS, który nie będzie pusty, jeśli żądanie nastąpiło właśnie przez ten protokół. Zastosowanie prostego warunku umożliwi nam dołączanie przedrostka z nazwą wersji protokołu w zależności, który jest dostępny:
if(isset($_SERVER['HTTPS'])) {
$current = 'https';
}
else {
$current = 'http';
}
echo $current . '://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
Innym rozwiązaniem może być manualne zdefiniowanie zmiennej z nazwą protokołu i domeny, a następnie dołączenie do niej zmiennej $_SERVER['REQUEST_URI']:
$host = 'https://www.example.com';
$current = $host . $_SERVER['REQUEST_URI'];
echo $current;
Dziękuje za artykuł, bardzo pomocny :)
OdpowiedzUsuńSuper! Dzięki tej podpowiedzi zautomatyzowaliśmy tag rel ="canonical" - dziękujemy
OdpowiedzUsuń