[PHP] Jak pobrać adres strony?
Gdy zajdzie potrzeba pobrania adresu strony, na której użytkownik aktualnie się znajduje, posłużyć się można do tego celu tablicą $_SERVER z kluczem 'SERVER_NAME'.
Pobranie adresu strony, na której znajduje się użytkownik sprowadza się dosłownie do połączenia dwóch elementów tablicy $_SERVER: 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:
<?php
$protocol = 'http';
if(isset($_SERVER['HTTPS'])) {
$protocol = 'https';
}
$current_url = $protocol . '://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
echo $current_url;
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']:
<?php
$host = 'https://www.example.com';
$current_url = $host . $_SERVER['REQUEST_URI'];
echo $current_url;
Dziękuje za artykuł, bardzo pomocny :)
OdpowiedzUsuńSuper! Dzięki tej podpowiedzi zautomatyzowaliśmy tag rel ="canonical" - dziękujemy
OdpowiedzUsuń