Немного ответов на часто возникающие вопросы (FAQ) по php.

08.06.2008 Юрий Мисейчик

faq по phpМне приходят письма где люди постоянно интересуются одним и тем же, вот в частности, самый задаваемый вопрос: Что делать, если в форме для переменной с одним и тем же именем введено несколько значений?
Я думаю, такая ситуация возникает в форме ввода пароля, ведь пользователь при регистрации не видит пароль, поэтому мы предлагаем ввести его дважды, т.е. вводится пароль и подтверждение пароля.
Рассмотрим стандартную форму регистрации:
... Логин: <input TYPE="text" NAME="name" /> E-mail: <input TYPE="text" NAME="email" /> Пароль: <input TYPE="password" NAME="pword[]" /> Подтверждение пароля: <input TYPE="password" NAME="pword[]" /> <input TYPE="submit" VALUE="Регистрация" /> ...

Обратите внимание на формы ввода пароля, теперь оно изменилось. Потому что должно содержать несколько значений, мы сделали его массивом, так в массиве передаваемых от формы данных мы получим второй массив, который содержит пароль и подтверждение пароля. Так в процессе обработки и передачи данных мы получим массив такого вида:

$passwords = array("nashparol", " nashparol "); $_POST = array("name"=&gt;"jorj", "email"=&gt;"admin@masterphp.ru.com", "pword"=&gt;$passwords);

В нашем случае для просмотра значений пароля вы должны обращаться к соответствующей переменной как к массиву с числовым индексом:
... foreach ($_GET as $key=&gt;$value) { echo "".$key." = " . $value . ""; } $passwords = $_GET["pword"]; echo "Первый пароль = ".$passwords[0]; echo ""; echo "Второй пароль = ".$passwords[1]; ...
Второй вопрос, который задают мне пользователи. В чем отличия метода GET от метода POST?
До сих пор для передачи данных из формы мы использовали метод GET, главным неудобством и ограничением этого метода является тот факт, что передаваемые данные помещаются прямо в адрес URL. В некоторых случаях это вполне допустимо, в других -- нет. Например, вам требуется передать из формы большой блок данных из поля типа textarea, обычно такой тип используется для размещения комментариев. Как правило, Web-сервер ограничивает число символов, которые можно поместить в URL-адрес, таким образом передать данные посредством метода GET просто невозможно.Согласно принятым стандартам технологии Web-программирования, метод GET не следует использовать для передачи данных в скрипты, которые могут иметь "побочные эффекты", а фактически любой скрипт, в котором происходит обработка данных, обладает этим свойством. До сих пор мы только отображали введенные данные, обработки не происходило, но если мы хотим добавить запись в базу данных, то это уже обработка, которая может иметь побочный эффект.

Тот факт, что метод GET передает данные в URL-адресе открытым, то есть, доступным для просмотра образом, не только влияет на безопасность системы, но обладает и другими неудобствами. Например, пользователь может сделать закладку на этот адрес, что приведет к тому, что операция будет выполняться много раз; поисковые машины, которые индексируют URL-адреса, могут перехватить данные, направляемые в вашу базу и так далее.

Поэтому в большинстве случаев имеет смысл пользоваться методом POST, который передает данные в теле запроса, а не в заголовке, как метод GET.

На сегодня мы разобрали только два вопроса, на очереди еще есть парочка вопросов и будет продолжение курса, поэтому следите за обновлениями блога.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Рубрики: FAQ по php, Обучение, Новичку |

Комментарии (5)

  1. такси пишет:

    весьма информативно,молодца!

  2. Абрамгутанг пишет:

    Если проверять входящие переменные, то без разницы какой метод. Хотя пост мне больше нравится, т.к. адресс более красивый. Но если посмотреть в сторону гугла или яндекса, то они как-то над этим не заморачиваются..

  3. liker пишет:

    Спасибо, понятно написано. Про массивы в формах давно искал как-то, но не нашел, пришлось без них.

  4. Вадим пишет:

    Спасибо, я как раз был озадачен по этому поводу, вовремя зашёл на ваш блог!

  5. Андреич пишет:

    Прикольно. Подпишусь-ка я на RSS пожалуй. :)

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.