PHP - Урок 5. Переменные сервера и глобальные перемепнные
Переменные сервера
И так сегодня мы приступаем к изучению соответственно программирования. Вводные темы по серверам мы прошили:
Я буду писать уроки так как учил их я. Потому что честно говоря. Многие учебники по PHP это либо копипаст с сайта php - либо пустая трата времени на размышления автора.
Мы хотим изучить все быстро. Тем более PHP делали как раз с этой целью.
У нас есть денвер, там папка c названием www. Вот туда мы сегодня и будем кластьть наши файлы. По настройкам серверов apache и nginx для реальных сайтов я сделаю отдельный урок. Сегодня же нам нужно по пробывать как это работает.
В первую очередь мы можем создать файл test.php и написать в нем <?php phpinfo(); ?>
Во первых мы убедимся что PHP обрабатывает наши скрипты, а во-вторых увидим настройки сервера и php.ini!
Если вы создали папку сайта только что, то денвер нужно перезапустить - кликнуть на рабочем столе restart denver.
Затем открываем браузер и набираем название созданной нами папки для сайта - в нашем примере thesite.loc
Наш сервер опять отобразил нам файл, который мы недавно написали - test.php. Хотя в реальных сайтах сервер не должен его отображать. Ну то есть он не должен показывать файлы. Это издержки безопасности. Они как раз таки важны для нашего php-шного случая.
Если вы поняли мои предыдущие уроки, то уже догадались. Клик по test.php - это тоже самое, что запрос файла http://thesite.ru/test.php
.
И так посмотрим что нам вернул сервер:
Это результат работы функции phpinfo();
Как она что сделала я раcскажу в следующем уроке.
А пока как и обещал рассмотрим переменные среды. Это фактически основа основ.
Почему так спросите вы? Дело в том что программа всегда получает данные - делает с ними что-то и возвращает. Правда иногда эти данные являются пустыми (void) - тут главное без философии. Вскоре рассмотрим контекст, память и функции))
Чаще всего свои программы я начинаю писать со строки отображающей переменные сервера:
<?php
print_r($_SERVER);
Ну тег PRE здесь для форматирования. Если не умничать - он добавит где нужно перевод строки. И вывод получится более читабельным.
Функция print_r - распечатывает массив. (Есть еще похожая функиция var_dump - работает по такому же принципу, но еще добавляет в свой вывод типы переменных).
Эти функции используются для отладки. И изучения данных.
Можете считать что в переменной $_SERVER хранятся данные, которые передаются скрипту в первую очередь. Например это может быть ссылка на никнейм профиля.
Допустим http://thesite.ru/rusldv
или например https://twitter.com/rusldv
или https://golos.io/@rusldv
- теперь вы знаете где их искать -
в глобальном массиве переменных сервера $_SERVER, а именно в $_SERVER['REQUEST_URI']
это нам пригодится когда мы изучим файл .htaccess который настраивает сервер апач.
А пока еще пара глобальных массивов
$_GET и $_POST
Это то тоже массивы, которые содержат данные - они содержат данные переданные из самой html-страницы, а что бы их передать используется HTML-тег
<FORM>
например так
<?php print $_GET['message']; ?>
<form action="">
<input type="text" name="message" />
<input type="submit" />
</form>
Если мы добавим данный код в файл PHP то он создаст переменную message и передаст ее GET-запросом в тот же php-файл. После чего наш текст введенный в поле input сервер загрузит в переменную $_GET['message'], а PHP - интерпретатор с помощью функции print (то же самое что и echo) выведет ее значение перед отправкой серверу.
В данном примере мы передали значение через GET запрос (поэтому и переменная называется GET). Есть аналогичный запрос POST. Он может передавать больше данных - GET в данный момент почему-то разработчики браузеров причислили к отображаемым в браузере данным и например майкрософт обрезает в некоторых своих браузерах данные этого запроса до выдуманного ими пределе. Странное поведение я не понимаю их))
Скорее всего это связано именно с названиями - GET - что, то запрашивает, и соответственно он сообщает данные об объекте запроса. А POST - сохраняет. Поэтому он должен передавать более крупные данные. На самих буферах TCP это правда никак не сказывается :)
Итак. В начале наших любых скриптов мы должны воспоминать о переменных $_SERVER, $_GET и $_POST (далее еще сюда присоединится $_FILES) - это те самые данные, которые пользователь нашей программы-сайта вводит для ее запуска.