Немного ответов на часто возникающие вопросы (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"=>"jorj",
"email"=>"admin@masterphp.ru.com",
"pword"=>$passwords);
В нашем случае для просмотра значений пароля вы должны обращаться к соответствующей переменной как к массиву с числовым индексом:
...
foreach ($_GET as $key=>$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.
На сегодня мы разобрали только два вопроса, на очереди еще есть парочка вопросов и будет продолжение курса, поэтому следите за обновлениями блога.
Рубрики: FAQ по php, Обучение, Новичку |


27.06.2008 в 15:09
весьма информативно,молодца!
29.06.2008 в 15:43
Если проверять входящие переменные, то без разницы какой метод. Хотя пост мне больше нравится, т.к. адресс более красивый. Но если посмотреть в сторону гугла или яндекса, то они как-то над этим не заморачиваются..
03.07.2008 в 09:14
Спасибо, понятно написано. Про массивы в формах давно искал как-то, но не нашел, пришлось без них.
04.07.2008 в 16:49
Спасибо, я как раз был озадачен по этому поводу, вовремя зашёл на ваш блог!
31.07.2008 в 22:21
Прикольно. Подпишусь-ка я на RSS пожалуй.