Пятница, 10.05.2024, 17:22
Главная
Регистрация
Вход
Софтер
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [34]
Партнер
Реклама
Каталог сайтов Каталог сайтов :: Развлекательный портал iTotal.RU
Radio D-FM Club
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Мои статьи

Обработка форм в PHP
Основная задача PHP - обработка форм, поэтому это самая важная тема, и я решил написал статью по ней самостоятельно. Тем более что я не нашёл в Интернете статей на эту тему, которые бы мне понравились.
  <br>         Во первых, хочу познакомить (или напомнить) о области действия переменных. Термин область действия (skope) относится к тем разделам сценария внутри которых возможен доступ к некоторой конкретной переменной, иначе говоря область из любого места которой видна эта переменная. В PHP используются следующие 4 основных типа области действия:
  <br>         1. Встроенные суперглобальные переменные. Видны везде.
  <br>         2. Глобальные переменные, обьвленные в сценарии винды в любом месте сценария, но не внутри функции.
  <br>         3. Переменные, использованные внутри функции, являться локальными по отношению к этой функции.
  <br>         4. Переменные, использованные внутри функции, которая объявлена как глобальная относиться к глобальным переменным, имеющим теже имена.
  <br>  
  <br>  В новых версиях РНР есть различные массивы, которые подчиняются собственным правилам. Их я буду описывать по ходу дела. Сейчас я привиду список суперглобальных переменных, которые винды везде:
  <br>  $GLOBAL – массив всех переменных.
  <br>  $SERVER – массив переменных среды сервера
  <br>  $_GET , $_POST – масив переменных переданные через форму методом GET или POST соответственно. Тут я хочу остановиться. Дело в том, что в некоторых источниках я читал что в старых версиях этих массивов нет. В очень древних версиях PHP существовали только массивы $HTTP_GET_VARS и $HTTP_POST_VARS, сейчас эти массивы так же присутсвуют, однако, говорят что их использование не рекомендуеться, а существуют они только для совместимости. У меня даже споры очень серьёзные были по этому поводу. Но в результате мы выяснили что использовать можно как $_GET так и $HTTP_GET_VARS, на всех современных серверах оба массива существуют. Мы так и не смогли найти сервера на котором была бы установлена старая версия РНР, в котором бы небыло массива $_GET. Если вы ничего не поняли из того что я сказал, не переживайте, юзайте $_GET и $_POST и всё
  <br>  
  <br>  $_COOKIE – масив cookie переменных
  <br>  $_SESSION – массив переменных сеанса
  <br>  $_FILES – массив переменных определяющих выгрузку файлов
  <br>  $_ENV массив переменных определяющих конфигурации сервера
  <br>  $_REQUEST – массив всех переменных вводимых пользователем
  <br>  Ну вроде ничего не забыл….  Есть различные переменные, переменные среды сервера, в которых есть много полезной инфы. Все перечислять я не имею ни желания ни возможностей, и по этому подскажу 2 вещи. Первое, всегда можно написать print_r($GLOBAL) и получить инфу о всех переменах. А о переменных среды сервера ( как и о сервере) можно получить инфу если написать phpinfo();
  <br>  
  <br>  Теперь давайте перейдём к самим формам. Как извесно, у тега <form> есть опция mthod которая указывает каким методом передаются данные. Метод GET передаёт переменные в вместе с URL, после вопросительного знака. Например: mysite.php?var1=value1&  var2=value2
  <br>  А POST в самом HTTP запросе. Как именно устроен протокол HTTP как – ни будь. Факт тот, что длинна URL ограничена, по этому большое кол-во данных нужно предавать через POST. Однако, переменные передаваемый через GET видны,  и по этому легче дебагать скрипты использующие GET. Некоторые считаю, что GET менее безопасный, ибо юзер видит все переменные, и может их менять. Конечно такое мнение имеет право на существование, однако, я не вижу причин почему юзер не может посмотреть сорц фаила и не изучить POST, и например, написать программу которая сама отсылает данные методом POST… возможно это мнение сложилось из тех людей, которые просто не знают как устроен HTTP протокол, и не умеют работать с сокетами….
  <br>  Следующий вопрос «как обращаться к этим переменным». Это очень просто. Самый лучший способ, это через массивы $_GET и $_POST ($HTTP_GET_VARS и $HTTP_GET_POST).
  <br>  Привиду пример:
  <br>  Index.html:
  <br>  

  <br>  <form method = "POST" action = "login.php">

  <br>  Enter your name: <input type = "text" name = "username"><br>

  <br>  <input type = "submit" value = "enter">

  <br>  </form>

  <br>  

  <br>  
  <br>  Login.php:
  <br>  

  <br>  
  
  echo "Hello, ".$_POST['username'];

  
  ?>

  <br>  

  <br>  
  <br>  Я думаю тут всё должно быть понятно. Единственное что login.php так же мог содержать фразу echo "hello, ".$HTTP_POST_VARS['username'] От этого бы ничего не изменилось. Теперь о одной важной детали в настройках сервера. Есть такой параметр – register_globals в фаиле php.ini. Если он установлин как on, то тогда к переменным можно обращаться на прямую, например вместо $_POST['username'] можно сразу написать $username. В старых версиях РНР по умалчанию эта настройка включена, однако в современных версиях эта настройка выключена. Я рекомендую никогда ей не пользоваться, по причины безопасности. Например, если эта настройка включена, вы никогда не можете быть уверены на верняка в правдоподобности информации, которая даёт функция isset (var). На неё сможет повлиять любой юзер. Зато есть замечательная функция explode (array). Она создаёт все переменные которые есть в массивы как отдельные. Например:
  <br>  

  <br>  $a['first'] = 1;

  <br>  $a['second'] = 2;

  <br>  explode ($a);

  <br>  echo $first.$second;

  <br>  

  <br>  Этот фрагмент кода выдаст 12. Почему? Подумайте сами, пусть это будет ваше домашнее задание:)
  <br>  
  <br>  Пожалуй хватит на сегодня, о сохранении полученной информации поговорим как – нибудь в другой раз.
Категория: Мои статьи | Добавил: Morris (25.10.2009)
Просмотров: 1869 | Комментарии: 10 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Логин:
Пароль:
Поиск
Статьи
[19.09.2009][Мои статьи]
Всё о тИЦ. (0)
[24.10.2009][Мои статьи]
SQL Injection - SQL инъекция и как ее избежать (2)
[03.11.2009][Мои статьи]
Индексация страниц сайта поисковыми роботами Яндекс (0)
[09.01.2010][Мои статьи]
Поднятие тИЦ и PR (0)
[05.01.2010][Мои статьи]
Аренда игровых серверов под CS 1.6, CSS, FEAR, LEFT4 DEAT, LEFT4 DEAT 2, и другие игры!!! (1)
Навигация
  • Locations of visitors to this page
  • Рейтинг!!!
    Яндекс цитирования

    Рейтинг@Mail.ru


    | Copyright MyCorp © 2024 | Сайт управляется системой uCoz|