Как получить URL текущей страницы в PHP

Сниппет

Для получения текущего URL страницы, PHP предоставляет серверную переменную $_SERVER. $_SERVER - встроенная переменная PHP.

Короткая версия:

downloadcopy
$currentLink = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

Полная версия:

downloadcopy
function getCurrentUrl($server, $useForwardedHost = false){
    $ssl      = ( ! empty( $server['HTTPS'] ) && $server['HTTPS'] == 'on' );
    $sp       = strtolower( $server['SERVER_PROTOCOL'] );
    $protocol = substr( $sp, 0, strpos( $sp, '/' ) ) . ( ( $ssl ) ? 's' : '' );
    $port     = $server['SERVER_PORT'];
    $port     = ( ( ! $ssl && $port=='80' ) || ( $ssl && $port=='443' ) ) ? '' : ':'.$port;
    $host     = ( $useForwardedHost && isset( $server['HTTP_X_FORWARDED_HOST'] ) ) ? $server['HTTP_X_FORWARDED_HOST'] : ( isset( $server['HTTP_HOST'] ) ? $server['HTTP_HOST'] : null );
    $host     = isset( $host ) ? $host : $server['SERVER_NAME'] . $port;
    return $protocol . '://' . $host . $server['REQUEST_URI'];
}

echo getCurrentUrl($_SERVER);

$useForwardedHost должна быть true если вы используете прокси или балансировщик.