0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>В этой статье будет рассказано о том, как в языке программирования PHP получить адрес текущей страницы. Также вы узнаете о работе переменной<strong>$_SERVER</strong>.</p>
1
<p>В этой статье будет рассказано о том, как в языке программирования PHP получить адрес текущей страницы. Также вы узнаете о работе переменной<strong>$_SERVER</strong>.</p>
2
<p>Первое, о чём следует сказать, - зачем вообще получать ссылки (urls) в PHP? На практике варианты могут различаться. Представьте, что у нас для разных разделов применяется один и тот же шаблон. И возникает потребность в том, чтобы вывести (либо не вывести - зависит от ситуации) какой-нибудь специальный блок, причём в других разделах вывод этого блока не нужен.</p>
2
<p>Первое, о чём следует сказать, - зачем вообще получать ссылки (urls) в PHP? На практике варианты могут различаться. Представьте, что у нас для разных разделов применяется один и тот же шаблон. И возникает потребность в том, чтобы вывести (либо не вывести - зависит от ситуации) какой-нибудь специальный блок, причём в других разделах вывод этого блока не нужен.</p>
3
<p>В большинстве случаев мы пожелаем выполнить поставленную задачу по условию. То есть сделаем условие, в котором будем выполнять проверку того либо иного раздела. Можно сказать, что с точки зрения архитектуры данное решение не является оптимальным. Но на практике нам нередко достаются уже реализованные проекты, с которыми необходимо что-то решать с учётом уже имеющейся архитектуры.</p>
3
<p>В большинстве случаев мы пожелаем выполнить поставленную задачу по условию. То есть сделаем условие, в котором будем выполнять проверку того либо иного раздела. Можно сказать, что с точки зрения архитектуры данное решение не является оптимальным. Но на практике нам нередко достаются уже реализованные проекты, с которыми необходимо что-то решать с учётом уже имеющейся архитектуры.</p>
4
<p>Но давайте не будем много говорить, а лучше приступим к решению поставленной задачи - получению ссылки в PHP.</p>
4
<p>Но давайте не будем много говорить, а лучше приступим к решению поставленной задачи - получению ссылки в PHP.</p>
5
<h2>Получение ссылки текущей страницы в PHP</h2>
5
<h2>Получение ссылки текущей страницы в PHP</h2>
6
<p>Для получения данных нужно обратиться к глобальной переменной в PHP, которая называется $_SERVER. Переменная $_SERVER представляет собой массив, содержащий много полезной информации. На практике $_SERVER может получать любые данные о текущем URL: - доменное имя; - название скрипта; - параметры URL.</p>
6
<p>Для получения данных нужно обратиться к глобальной переменной в PHP, которая называется $_SERVER. Переменная $_SERVER представляет собой массив, содержащий много полезной информации. На практике $_SERVER может получать любые данные о текущем URL: - доменное имя; - название скрипта; - параметры URL.</p>
7
<p>По сути, в глобальном массиве $_SERVER хранятся и заголовки, и пути, и местоположения скриптов. Если вас интересует сразу вся информация, хранимая в массиве $_SERVER, воспользуйтесь следующим кодом на PHP. Он выведет всё, что хранится, сделав это в читабельном виде:</p>
7
<p>По сути, в глобальном массиве $_SERVER хранятся и заголовки, и пути, и местоположения скриптов. Если вас интересует сразу вся информация, хранимая в массиве $_SERVER, воспользуйтесь следующим кодом на PHP. Он выведет всё, что хранится, сделав это в читабельном виде:</p>
8
<?php echo '<pre>'; var_dump($_SERVER); echo '</pre>'; ?><p>Идём дальше. Представьте, что у вас есть web-страница, имеющая следующий вид:<em>http://localhost/php-lessons/url/?name=anna&city=Valencia</em>. Тестирование в данном примере осуществляется на локальном сервере. Если надо тестировать код на реальном веб-сайте, доступном в интернете, достаточно вместо localhost прописать имя сайта (домен) - тот же otus.ru.</p>
8
<?php echo '<pre>'; var_dump($_SERVER); echo '</pre>'; ?><p>Идём дальше. Представьте, что у вас есть web-страница, имеющая следующий вид:<em>http://localhost/php-lessons/url/?name=anna&city=Valencia</em>. Тестирование в данном примере осуществляется на локальном сервере. Если надо тестировать код на реальном веб-сайте, доступном в интернете, достаточно вместо localhost прописать имя сайта (домен) - тот же otus.ru.</p>
9
<p>Что же мы увидим в подопытном url? Нас могут интересовать следующие данные: - адрес веб-страницы без GET-параметров; - URL с GET-параметрами; - непосредственно GET-параметры без текущей ссылки (адреса веб-страницы).</p>
9
<p>Что же мы увидим в подопытном url? Нас могут интересовать следующие данные: - адрес веб-страницы без GET-параметров; - URL с GET-параметрами; - непосредственно GET-параметры без текущей ссылки (адреса веб-страницы).</p>
10
<p>Лучше всего разобраться с каждым из случаев по отдельности - так будет гораздо понятнее.</p>
10
<p>Лучше всего разобраться с каждым из случаев по отдельности - так будет гораздо понятнее.</p>
11
<h2>Получение полного URL в PHP</h2>
11
<h2>Получение полного URL в PHP</h2>
12
<p>Для получения полного URL вместе с имеющимися GET-параметрами, пригодится следующий код:</p>
12
<p>Для получения полного URL вместе с имеющимися GET-параметрами, пригодится следующий код:</p>
13
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo $url;<p>Что здесь что? В первую очередь, осуществляется проверка, какой именно протокол передачи данных задействуется: https или http. В случае, если значение $_SERVER[‘HTTPS’] не является пустым, речь идёт о протоколе https, в обратном случае - http.</p>
13
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo $url;<p>Что здесь что? В первую очередь, осуществляется проверка, какой именно протокол передачи данных задействуется: https или http. В случае, если значение $_SERVER[‘HTTPS’] не является пустым, речь идёт о протоколе https, в обратном случае - http.</p>
14
<p>На втором этапе выполняется присоединение двоеточия и двух слэшев, имени домена и остальной части URL.</p>
14
<p>На втором этапе выполняется присоединение двоеточия и двух слэшев, имени домена и остальной части URL.</p>
15
<p>Итог выполнения кода будет следующим:</p>
15
<p>Итог выполнения кода будет следующим:</p>
16
<p>Если протокол получать не требуется, код на PHP можно немного сократить:</p>
16
<p>Если протокол получать не требуется, код на PHP можно немного сократить:</p>
17
<p>Смотрим на результат и видим, что протокол отсутствует:</p>
17
<p>Смотрим на результат и видим, что протокол отсутствует:</p>
18
<h2>Получение URL в PHP без GET-параметров</h2>
18
<h2>Получение URL в PHP без GET-параметров</h2>
19
<p>Иногда эти параметры, передаваемые в качестве части ссылки, нас не интересуют, то есть требуется получить адрес без них. Мы говорим о следующих параметрах:<em>name=anna&city=Valencia</em>.</p>
19
<p>Иногда эти параметры, передаваемые в качестве части ссылки, нас не интересуют, то есть требуется получить адрес без них. Мы говорим о следующих параметрах:<em>name=anna&city=Valencia</em>.</p>
20
<p>В действительности их можно отсечь, используя функцию explode в PHP, разбивающую строку по разделителю. Не стоит объяснять, что ссылка представляет собой строку, а параметры GET начинают прописываться после "?". В результате вопросительный знак и станет разделителем, а функция explode сделает из строки массив с 2-мя элементами. Первый элемент станет содержать искомую ссылку без GET-параметров, так как эти самые параметры останутся во втором элементе.</p>
20
<p>В действительности их можно отсечь, используя функцию explode в PHP, разбивающую строку по разделителю. Не стоит объяснять, что ссылка представляет собой строку, а параметры GET начинают прописываться после "?". В результате вопросительный знак и станет разделителем, а функция explode сделает из строки массив с 2-мя элементами. Первый элемент станет содержать искомую ссылку без GET-параметров, так как эти самые параметры останутся во втором элементе.</p>
21
<p>Код на PHP с использованием переменной $_SERVER будет выглядеть так:</p>
21
<p>Код на PHP с использованием переменной $_SERVER будет выглядеть так:</p>
22
<p>Ну и результат:</p>
22
<p>Ну и результат:</p>
23
<h2>Получение только параметров GET</h2>
23
<h2>Получение только параметров GET</h2>
24
<p>Эта операция тем более не вызывает сложностей. В данном случае код с использованием переменной $_SERVER будет выглядеть следующим образом:</p>
24
<p>Эта операция тем более не вызывает сложностей. В данном случае код с использованием переменной $_SERVER будет выглядеть следующим образом:</p>
25
<p>С помощью этого кода получим:</p>
25
<p>С помощью этого кода получим:</p>
26
<p>Это всё. Надеемся, что теперь вы знаете, как происходит получение PHP ссылки и как работает глобальная переменная $_SERVER. Если же интересуют более продвинутые знания, записывайтесь на курсы OTUS!</p>
26
<p>Это всё. Надеемся, что теперь вы знаете, как происходит получение PHP ссылки и как работает глобальная переменная $_SERVER. Если же интересуют более продвинутые знания, записывайтесь на курсы OTUS!</p>
27
<p><em>Источник - https://website-create.ru/kak-v-php-poluchit-tekushhij-url/</em>.</p>
27
<p><em>Источник - https://website-create.ru/kak-v-php-poluchit-tekushhij-url/</em>.</p>
28
28