[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите разобраться с формой отправки, отправлени
edwardush
У меня есть форма отправки сообщения на сервер. Всё работает, но есть одна проблема. То есть она не проверяет поля. Как бы я не нажал на отправить и сообщение отправляется на сервер сразу. А мне надо чтобы проверяло все три поля и выводило сообщение - Сообщение не отправлено.
Где надо дописать мне здесь.


HTML
index.html

<form action="send.php" method="post" name="f1">
<p>Введите имя:<br>
<input type="text" name="name"></p>
<p>Введите email:<br>
<input type="text" name="email"></p>
<p>Введите сообщение:<br>
<textarea name="message" rows="5" cols="30"></textarea>
<br>
<br>
<input type="submit" value="Отправить "></p>
<input type="reset" value="Стереть"></p>
</form>



PHP
send.php


<?php
if (isset($_POST['$name'])) {$name $_POST['$name'];}
if (isset(
$_POST['$email'])) {$email $_POST['$email'];}
if (isset(
$_POST['$message'])) {$message $_POST['$message'];}

$address 'mail@gmail.com';
$sub "Сообщение";
$mes "Автор назвался: $name \nУказал свой адрес: $email \nСодержание письма: $message";
$verify mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
if (
$verify == 'true')
{
echo 
"<p>Сообщение отправлено";
}
else 
{
echo 
"<p>Сообщение не отправлено";
}





Спустя 5 минут, 24 секунды (22.01.2009 - 16:34) jetistyum написал(а):
1. Можно проверять на клиенте - jаvаscript-ом.
2. нужно проверять на сервере
PHP
$errors = array();
if (isset(
$_POST['$name'])&&$_POST['$name']!='')
 { 
     
$name $_POST['$name'];
 }
else{
$errors[] = 'Заполните поле Имя';
и так для всех полей...

перед темкак отправить письмопроверяешь $errors;
if (
$errors){
 
выводишь опять тут формузаполняешь поля текоторые прошли валидацию... 
}
else{
sendmail();//отправляешь письмо
}

это примитивная проверка... пример...

Спустя 12 минут, 55 секунд (22.01.2009 - 16:47) twin написал(а):
Ну вот поподробнее, разбирайтесь.
PHP
$login = isset($_POST['login'])?$_POST['login']:null; 
$email 
= isset($_POST['email'])?$_POST['email']:null;
$text = isset($_POST['text'])?$_POST['text']:null;

if(isset(
$_POST['ok']))  
{
$array_error = array(); 
    if
(!$login) 
    $array_error
[] = "Вы не написали имя.";
      
    if
(!$email) 
    $array_error
[] = "Вы не написали E-mail.";
    elseif(!preg_match("/^[a-z0-9_.-]+@([a-z0-9_]+.)+[a-z]{2,4}$/",$email) && $email)
    $array_error[] = "E-mail написан не корректно";
    
    if
(!$text) 
    $array_error
[] = "Нет сообщения";

}
 

if(count($array_error) == 0))
{
//отправляем письмо
}
echo implode("<br>",$array_error);
?>
<form action="?" method="post"> 
Имя
<input name="name" type="text" value="<?php echo htmlspecialchars($login) ?>" /><br /> 
Email 
<input name="email" type="text" value="<?php echo  htmlspecialchars($email) ?>" /><br /> 
Сообщение
<textarea name="text" cols="40" rows="10"><?php echo  htmlspecialchars($text?>  </textarea><input n

Спустя 2 минуты, 4 секунды (22.01.2009 - 16:49) twin написал(а):
Удивительно - концовку режет. Баг кстати.
Вот отдельно:
HTML
<input name="ok" type="submit"  /> 
</form>

Спустя 9 минут, 30 секунд (22.01.2009 - 16:58) dfsq написал(а):
по моему, чел спрашивал про проверку на клиенте. вот тебе пища для размышлений

Код

<form name="f1">
<input type="text" name="text"><br>
<textarea name="t"></textarea><br>
<input type="button" onclick="validate();" value="Send">
</form>
<script>
function validate()
{
if(document.f1.text.value == "")
{
 document.forms['f1'].text.style.backgroundColor = 'red';
 document.f1.text.focus();
 return false;
}
}
</script>

Спустя 1 минута, 42 секунды (22.01.2009 - 17:00) twin написал(а):
Цитата
по моему, чел спрашивал про проверку на клиенте.

Не нашел чего то я.... Где там про клиент?
ЗЫ А, стоп. точно. На сервер.

Спустя 10 минут, 58 секунд (22.01.2009 - 17:11) edwardush написал(а):
Спасибо большое

Спустя 48 минут, 58 секунд (22.01.2009 - 18:00) Adamant написал(а):
Цитата (twin @ 22.01.2009 - 20:49)
Удивительно - концовку режет. Баг кстати.

Да тоже заметил такое. Если после php идет в сообщении хтмл-код, чтобы его не резало, а выводило на форум полностью, дописывайте в самом конце в отдельной последней строке (перед закрывающим ББ-тэгом [/php]) <??>. После этого концовка хтмл кода не режется. user posted image


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.