HTML Diff
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 &lt;?php echo '&lt;pre&gt;'; var_dump($_SERVER); echo '&lt;/pre&gt;'; ?&gt;<p>Идём дальше. Представьте, что у вас есть web-страница, имеющая следующий вид:<em>http://localhost/php-lessons/url/?name=anna&amp;city=Valencia</em>. Тестирование в данном примере осуществляется на локальном сервере. Если надо тестировать код на реальном веб-сайте, доступном в интернете, достаточно вместо localhost прописать имя сайта (домен) - тот же otus.ru.</p>
8 &lt;?php echo '&lt;pre&gt;'; var_dump($_SERVER); echo '&lt;/pre&gt;'; ?&gt;<p>Идём дальше. Представьте, что у вас есть web-страница, имеющая следующий вид:<em>http://localhost/php-lessons/url/?name=anna&amp;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&amp;city=Valencia</em>.</p>
19 <p>Иногда эти параметры, передаваемые в качестве части ссылки, нас не интересуют, то есть требуется получить адрес без них. Мы говорим о следующих параметрах:<em>name=anna&amp;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