Улучшить форму отправки
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Улучшить форму отправки - 2010-06-27 22:10:01.913333
|
|
|
c0der
Сообщений: 87
Оценки: 0
Присоединился: 2009-07-18 10:33:08.680000
|
Всем привет. Нужна помощь со скриптом. Есть страница с формой, данные из формы сохраняются в файл. Вот код
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<bоdу>
<?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); // закрываем файл
}
?>
<form action="/form.php" method="POST">
<table>
<tr><td>Имя:</td><td><input type="text" name="name" maxlength="64" value=""></td></tr>
<tr><td>e-mail:</td><td><input type="text" name="email" maxlength="64" value=""></td></tr>
<tr><td>Адрес:</td><td><input type="text" name="addr" maxlength="64" value=""></td></tr>
<tr><td>Описание:</td><td>
<textarea style="white-space: pre-wrap;" name="mes" rows="7" cols="35">
</textarea></td></tr>
<tr><td> </td><td><input type="submit" name="submit" value="Отправить"></td></tr>
</table>
</form>
</bоdу>
</html>
Как реализовать проверку на заполненность полей формы, и если одно из полей не заполнено вывести фразу "Ошибка" а если все поля заполнены то "Данные отправлены", нужно чтобы эти фразы выводились выше формы обычным текстом, т.е не алертом. И ещё вопрос реально таким же способом сохранять изображение?
|
|
|
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!"); }
|
|
|
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!"); } А не мог бы ты правильно вставить это в скрипт что я привёл в первом посте, а то я только на страницу захожу а там уже показывается "Вы не заполнили все поля!".
|
|
|
RE: Улучшить форму отправки - 2010-06-28 07:18:04.916666
|
|
|
_Pyint0_
Сообщений: 394
Оценки: 0
Присоединился: 2008-12-11 19:02:23.436666
|
quote:
а то я только на страницу захожу а там уже показывается "Вы не заполнили все поля!". Потому, что нет проверки, нажата ли кнопка Отправить? Просто занесите функции обработки формы в if(isset($_POST["Submit"])) { проверка, обработка формы…. }
|
|
|
RE: Улучшить форму отправки - 2010-06-28 10:29:09.063333
|
|
|
Agent Smith
Сообщений: 976
Оценки: 0
Присоединился: 2007-04-10 21:56:49.593333
|
Смотрю я на это и вспоминаю, как я писал когда тоже такой дебильный код.
|
|
|
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: <Files ~ "*">
Order allow,deny
Deny from all
</Files> Проверьте переменные с preg_match. И потом очистите каждую переменную: $name = stripslashes($name); $name = htmlspecialchars($name); $login = trim($name); Или в одно $name = stripslashes(htmlspecialchars(trim($name))); А то есть засранцы, которые запихивают в формы скриптовый код =)
|
|
|
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: <Files ~ "*">
Order allow,deny
Deny from all
</Files> Проверьте переменные с preg_match. И потом очистите каждую переменную: $name = stripslashes($name); $name = htmlspecialchars($name); $login = trim($name); Или в одно $name = stripslashes(htmlspecialchars(trim($name))); А то есть засранцы, которые запихивают в формы скриптовый код =) Спасибо что объяснил всё. А запись на фтп использую потому что smtp на сервере отключен.
|
|
|
|
|