[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;

Komentarze

  1. Dziękuje za artykuł, bardzo pomocny :)

    OdpowiedzUsuń
  2. Super! Dzięki tej podpowiedzi zautomatyzowaliśmy tag rel ="canonical" - dziękujemy

    OdpowiedzUsuń

Prześlij komentarz

Dzięki za komentarz!

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[HTML] Jak wyśrodkować tekst?