HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В предыдущем уроке мы создали сайт из одного PHP-файла, печатающего на экран в STDOUT текущий год. Так работает только PHP, потому что это единственный в мире язык, который в своем ядре работает как CGI-скрипт. Это стало причиной его популярности.</p>
1 <p>В предыдущем уроке мы создали сайт из одного PHP-файла, печатающего на экран в STDOUT текущий год. Так работает только PHP, потому что это единственный в мире язык, который в своем ядре работает как CGI-скрипт. Это стало причиной его популярности.</p>
2 <p>Ниже мы увидим основные возможности, которые есть в языке для работы с вебом "из коробки".</p>
2 <p>Ниже мы увидим основные возможности, которые есть в языке для работы с вебом "из коробки".</p>
3 <p>После выполнения скрипта<em>index.php</em>все необходимые HTTP-заголовки ответа PHP отправил автоматически. А телом ответа стали данные, которые были отправлены в STDOUT:</p>
3 <p>После выполнения скрипта<em>index.php</em>все необходимые HTTP-заголовки ответа PHP отправил автоматически. А телом ответа стали данные, которые были отправлены в STDOUT:</p>
4 <p>PHP об этом говорит прямо: X-Powered-By: PHP/7.4.3. Заголовки можно менять и добавлять, используя функцию<a>header()</a>. Эта функция принимает на вход строку с одним заголовком, как это делается в HTTP-ответе:</p>
4 <p>PHP об этом говорит прямо: X-Powered-By: PHP/7.4.3. Заголовки можно менять и добавлять, используя функцию<a>header()</a>. Эта функция принимает на вход строку с одним заголовком, как это делается в HTTP-ответе:</p>
5 <p>Теперь запрос:</p>
5 <p>Теперь запрос:</p>
6 <p>Заголовок, установленный с помощью функции header(), появился в ответе. Функцию header() можно вызывать, если клиенту еще не передавались данные. То есть она должна идти в коде первой до любого вывода. Это требование вытекает из устройства HTTP. Сначала идут заголовки и только потом тело:</p>
6 <p>Заголовок, установленный с помощью функции header(), появился в ответе. Функцию header() можно вызывать, если клиенту еще не передавались данные. То есть она должна идти в коде первой до любого вывода. Это требование вытекает из устройства HTTP. Сначала идут заголовки и только потом тело:</p>
7 <p>Всё, что мы обсудили выше, касается HTTP-ответа, но не менее важно уметь работать с данными HTTP-запроса: посмотреть текущие заголовки, адрес, параметры запроса и его тело. Для этого в PHP реализованы суперглобальные переменные (массивы), которые доступны из любого места программы. К ним относятся:</p>
7 <p>Всё, что мы обсудили выше, касается HTTP-ответа, но не менее важно уметь работать с данными HTTP-запроса: посмотреть текущие заголовки, адрес, параметры запроса и его тело. Для этого в PHP реализованы суперглобальные переменные (массивы), которые доступны из любого места программы. К ним относятся:</p>
8 <ul><li>$GLOBALS</li>
8 <ul><li>$GLOBALS</li>
9 <li>$_SERVER</li>
9 <li>$_SERVER</li>
10 <li>$_GET</li>
10 <li>$_GET</li>
11 <li>$_POST</li>
11 <li>$_POST</li>
12 <li>$_FILES</li>
12 <li>$_FILES</li>
13 <li>$_COOKIE</li>
13 <li>$_COOKIE</li>
14 <li>$_SESSION</li>
14 <li>$_SESSION</li>
15 <li>$_REQUEST</li>
15 <li>$_REQUEST</li>
16 <li>$_ENV</li>
16 <li>$_ENV</li>
17 </ul><p>И хотя чисто технически это обычные массивы, которые можно изменять, большинство из них предназначены только для чтения. Например, массив $_SERVER содержит в себе все заголовки запроса:</p>
17 </ul><p>И хотя чисто технически это обычные массивы, которые можно изменять, большинство из них предназначены только для чтения. Например, массив $_SERVER содержит в себе все заголовки запроса:</p>
18 <p>Обратите внимание на формат ключей. PHP автоматически переводит все имена заголовков в верхний регистр. Кроме заголовков этот массив содержит некоторые дополнительные параметры, например, имя запущенного скрипта и версию PHP.</p>
18 <p>Обратите внимание на формат ключей. PHP автоматически переводит все имена заголовков в верхний регистр. Кроме заголовков этот массив содержит некоторые дополнительные параметры, например, имя запущенного скрипта и версию PHP.</p>
19 <p>Практически главный ключ в этом массиве - REQUEST_URI. Он содержит адрес запрошенной страницы, и на основе него выбирается подходящее действие.</p>
19 <p>Практически главный ключ в этом массиве - REQUEST_URI. Он содержит адрес запрошенной страницы, и на основе него выбирается подходящее действие.</p>
20 <p>$_POST содержит данные, отправленные методом POST. А вот $_GET вопреки своему названию, содержит параметры запроса, которые можно отправить с любым методом. При этом не все PHP-программисты это знают и думают, что существует понятие "гет-параметры". Массив $_REQUEST содержит объединенные данные массивов $_POST и $_GET.</p>
20 <p>$_POST содержит данные, отправленные методом POST. А вот $_GET вопреки своему названию, содержит параметры запроса, которые можно отправить с любым методом. При этом не все PHP-программисты это знают и думают, что существует понятие "гет-параметры". Массив $_REQUEST содержит объединенные данные массивов $_POST и $_GET.</p>