Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Улучшить форму отправки

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Улучшить форму отправки
Имя
Сообщение << Старые топики   Новые топики >>
Улучшить форму отправки - 2010-06-27 22:10:01.913333   
c0der

Сообщений: 87
Оценки: 0
Присоединился: 2009-07-18 10:33:08.680000
Всем привет. Нужна помощь со скриптом. Есть страница с формой, данные из формы сохраняются в файл.
Вот код

&lt;html&gt; &lt;head&gt; &lt;title&gt;Untitled Document&lt;/title&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=windows-1251"&gt; &lt;/head&gt; &lt;bоdу&gt; &lt;?php $name = $_POST['name']; // собираем введенные данные и записываемв переменные $email = $_POST['email']; $mes = $_POST['mes']; $addr = $_POST['addr]; $text .= "Имя: $name \n"; $text .= "Почта: $email \n"; $text .= "Адрес: $addr \n"; $text .= "Сообщение: $mes \n"; if (!empty($name) && !empty($email) && !empty($mes) && !empty($addr)) //если все переменные имеют значения выполняем запись в файл { $file = fopen ("message.txt", "a+"); //открываем для перезаписи файл message.txt лежаший в одной папке с текущей страницей fwrite ($file,$text); // пишем в файл fclose ($file); // закрываем файл } ?&gt; &lt;form action="/form.php" method="POST"&gt; &lt;table&gt; &lt;tr&gt;&lt;td&gt;Имя:&lt;/td&gt;&lt;td&gt;&lt;input type="text" name="name" maxlength="64" value=""&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;e-mail:&lt;/td&gt;&lt;td&gt;&lt;input type="text" name="email" maxlength="64" value=""&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Адрес:&lt;/td&gt;&lt;td&gt;&lt;input type="text" name="addr" maxlength="64" value=""&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Описание:&lt;/td&gt;&lt;td&gt; &lt;textarea style="white-space: pre-wrap;" name="mes" rows="7" cols="35"&gt; &lt;/textarea&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;input type="submit" name="submit" value="Отправить"&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;/form&gt; &lt;/bоdу&gt; &lt;/html&gt;
Как реализовать проверку на заполненность полей формы, и если одно из полей не заполнено вывести фразу "Ошибка" а если все поля заполнены то "Данные отправлены", нужно чтобы эти фразы выводились выше формы обычным текстом, т.е не алертом.

И ещё вопрос реально таким же способом сохранять изображение?
Post #: 1
RE: Улучшить форму отправки - 2010-06-27 22:18:37.270000   
_Pyint0_

Сообщений: 394
Оценки: 0
Присоединился: 2008-12-11 19:02:23.436666
Ну сначала делаете проверку:
if (isset($_POST['name'])) { $login = $_POST['name']; if ($login == '') { unset($name);} }
если поле name было передано скрипту, тогда присваиваем его в переменную, если $login пуст, уничтожаем переменную!
и так для каждого поля формы.

if (empty($name) or empty($email) or empty($mes) or empty($addr) or empty($text))
{
exit ("Вы не заполнили все поля!");
}


if (!preg_match('/^(?:[a-z0-9]+(?:[-_]?[a-z0-9]+)?@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i',$email))
{
exit ("Неверный формат E-mail!");
}
Post #: 2
RE: Улучшить форму отправки - 2010-06-27 22:49:55.713333   
c0der

Сообщений: 87
Оценки: 0
Присоединился: 2009-07-18 10:33:08.680000

quote:

ORIGINAL: _Pyint0_

Ну сначала делаете проверку:
if (isset($_POST['name'])) { $login = $_POST['name']; if ($login == '') { unset($name);} }
если поле name было передано скрипту, тогда присваиваем его в переменную, если $login пуст, уничтожаем переменную!
и так для каждого поля формы.

if (empty($name) or empty($email) or empty($mes) or empty($addr) or empty($text))
{
exit ("Вы не заполнили все поля!");
}


if (!preg_match('/^(?:[a-z0-9]+(?:[-_]?[a-z0-9]+)?@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i',$email))
{
exit ("Неверный формат E-mail!");
}


А не мог бы ты правильно вставить это в скрипт что я привёл в первом посте, а то я только на страницу захожу а там уже показывается "Вы не заполнили все поля!".


Post #: 3
RE: Улучшить форму отправки - 2010-06-28 07:18:04.916666   
_Pyint0_

Сообщений: 394
Оценки: 0
Присоединился: 2008-12-11 19:02:23.436666
quote:

а то я только на страницу захожу а там уже показывается "Вы не заполнили все поля!".

Потому, что нет проверки, нажата ли кнопка Отправить?

Просто занесите функции обработки формы в
if(isset($_POST["Submit"]))
{
проверка, обработка формы….
}
Post #: 4
RE: Улучшить форму отправки - 2010-06-28 10:29:09.063333   
Agent Smith

Сообщений: 976
Оценки: 0
Присоединился: 2007-04-10 21:56:49.593333
Смотрю я на это и вспоминаю, как я писал когда тоже такой дебильный код.
Post #: 5
RE: Улучшить форму отправки - 2010-06-28 11:14:27.966666   
_Pyint0_

Сообщений: 394
Оценки: 0
Присоединился: 2008-12-11 19:02:23.436666
Было-бы логично поместить код формы в начало файла, а обработку ниже, action не указывать.
Ниже проверку, if(isset($_POST["Submit"])) {проверка и обработка данных формы}
Кстати, а зачем записывать данные из формы в файл? Лучше mail();
Или в БД, так надёжнее и безопаснее!
В крайнем случае поместите файл .htaccess в директорию с txt, куда записываются данные из формы.
Только если txt в корне с index'ом, поместите txt в другую директорию. А то посетители не увидят ваш сайт :D
Содержимое .htaccess:
&lt;Files ~ "*"&gt; Order allow,deny Deny from all &lt;/Files&gt;
Проверьте переменные с preg_match.

И потом очистите каждую переменную:
$name = stripslashes($name);
$name = htmlspecialchars($name);
$login = trim($name);

Или в одно $name = stripslashes(htmlspecialchars(trim($name)));

А то есть засранцы, которые запихивают в формы скриптовый код =)
Post #: 6
RE: Улучшить форму отправки - 2010-06-28 20:12:14.776666   
c0der

Сообщений: 87
Оценки: 0
Присоединился: 2009-07-18 10:33:08.680000

quote:

ORIGINAL: _Pyint0_

Было-бы логично поместить код формы в начало файла, а обработку ниже, action не указывать.
Ниже проверку, if(isset($_POST["Submit"])) {проверка и обработка данных формы}
Кстати, а зачем записывать данные из формы в файл? Лучше mail();
Или в БД, так надёжнее и безопаснее!
В крайнем случае поместите файл .htaccess в директорию с txt, куда записываются данные из формы.
Только если txt в корне с index'ом, поместите txt в другую директорию. А то посетители не увидят ваш сайт :D
Содержимое .htaccess:
&lt;Files ~ "*"&gt; Order allow,deny Deny from all &lt;/Files&gt;
Проверьте переменные с preg_match.

И потом очистите каждую переменную:
$name = stripslashes($name);
$name = htmlspecialchars($name);
$login = trim($name);

Или в одно $name = stripslashes(htmlspecialchars(trim($name)));

А то есть засранцы, которые запихивают в формы скриптовый код =)

Спасибо что объяснил всё. А запись на фтп использую потому что smtp на сервере отключен.
Post #: 7
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Улучшить форму отправки







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.