Обработка форм
Автор: dlap 07.03.2017 10:24
Основная задача PHP - обработка форм, поэтому это самая важная тема, и я решил написал статью по ней самостоятельно. Тем более что я не нашёл в Интернете статей на эту тему, которые бы мне понравились.
Во первых, хочу познакомить (или напомнить) о области действия переменных. Термин область действия (skope) относится к тем разделам сценария внутри которых возможен доступ к некоторой конкретной переменной, иначе говоря область из любого места которой видна эта переменная. В PHP используются следующие 4 основных типа области действия:
1. Встроенные суперглобальные переменные. Видны везде.
2. Глобальные переменные, обьвленные в сценарии винды в любом месте сценария, но не внутри функции.
3. Переменные, использованные внутри функции, являться локальными по отношению к этой функции.
4. Переменные, использованные внутри функции, которая объявлена как глобальная относиться к глобальным переменным, имеющим теже имена.
В новых версиях РНР есть различные массивы, которые подчиняются собственным правилам. Их я буду описывать по ходу дела. Сейчас я привиду список суперглобальных переменных, которые винды везде:
$GLOBAL – массив всех переменных.
$SERVER – массив переменных среды сервера
$_GET , $_POST – масив переменных переданные через форму методом GET или POST соответственно. Тут я хочу остановиться. Дело в том, что в некоторых источниках я читал что в старых версиях этих массивов нет. В очень древних версиях PHP существовали только массивы $HTTP_GET_VARS и $HTTP_POST_VARS, сейчас эти массивы так же присутсвуют, однако, говорят что их использование не рекомендуеться, а существуют они только для совместимости. У меня даже споры очень серьёзные были по этому поводу. Но в результате мы выяснили что использовать можно как $_GET так и $HTTP_GET_VARS, на всех современных серверах оба массива существуют. Мы так и не смогли найти сервера на котором была бы установлена старая версия РНР, в котором бы небыло массива $_GET. Если вы ничего не поняли из того что я сказал, не переживайте, юзайте $_GET и $_POST и всё
$_COOKIE – масив cookie переменных
$_SESSION – массив переменных сеанса
$_FILES – массив переменных определяющих выгрузку файлов
$_ENV массив переменных определяющих конфигурации сервера
$_REQUEST – массив всех переменных вводимых пользователем
Ну вроде ничего не забыл…. Есть различные переменные, переменные среды сервера, в которых есть много полезной инфы. Все перечислять я не имею ни желания ни возможностей, и по этому подскажу 2 вещи. Первое, всегда можно написать print_r($GLOBAL) и получить инфу о всех переменах. А о переменных среды сервера ( как и о сервере) можно получить инфу если написать phpinfo();
Теперь давайте перейдём к самим формам. Как извесно, у тега
Login.php:
Я думаю тут всё должно быть понятно. Единственное что login.php так же мог содержать фразу echo "hello, ".$HTTP_POST_VARS['username'] От этого бы ничего не изменилось. Теперь о одной важной детали в настройках сервера. Есть такой параметр – register_globals в фаиле php.ini. Если он установлин как on, то тогда к переменным можно обращаться на прямую, например вместо $_POST['username'] можно сразу написать $username. В старых версиях РНР по умалчанию эта настройка включена, однако в современных версиях эта настройка выключена. Я рекомендую никогда ей не пользоваться, по причины безопасности. Например, если эта настройка включена, вы никогда не можете быть уверены на верняка в правдоподобности информации, которая даёт функция isset (var). На неё сможет повлиять любой юзер. Зато есть замечательная функция explode (array). Она создаёт все переменные которые есть в массивы как отдельные. Например:
$a['first'] = 1; $a['second'] = 2; explode ($a); echo $first.$second;
Этот фрагмент кода выдаст 12. Почему? Подумайте сами, пусть это будет ваше домашнее задание:)
Пожалуй хватит на сегодня, о сохранении полученной информации поговорим как – нибудь в другой раз.