[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибки не заполненных полей формы в DIV
sashgera
Здравствуйте
Я сгенерил где-то форму обратной связи и изменил ее под свои нужды. Форма и обработчик находятся в одном файле, ошибки: не заполненные поля, кривой e-mail, капча – выводятся вверху формы в div. Для этого кусок кода обработчика поместил в div. На этом этапе все нормально.
Но при отправке письма, в блок див, кроме echo 'Сообщение отправлено…, также запихивается и вся страница.
И второе – как можно сделать так, чтобы не заполненное поле с e-mail не проверялось до тех пор, пока в нем не введут какой нить текст. Например, если юзер ничего не ввел в поле ВАШ E-MAIL, то будут две ошибки:
- заполните поле Ваш e-mail
- Введенный вами адрес e-mail имеет неправильный формат

Пожалуйста, посмотрите нижеприведенный обработчик и если сможете, помогите
<div style="width:500px; margin:0 auto; text-align:left; color:#003300; font:12px tahoma, verdana; background:#F5F5F5;">
<?
session_start ();
error_reporting(0);
function show_form()
{
$_SESSION['code'] = rand(1000, 9999); // этот кусок кода поместил в div
?>
</div>


<?
}
function complete_mail() {

$empty_input[0] = '<font color="red">Ваше имя</font>';
$empty_input[1] = '<font color="red">бла-бла-бла</font>';
$empty_input[2] = '<font color="red">бла-бла-бла</font>';
$empty_input[3] = '<font color="red">бла-бла-бла</font>';
$empty_input[4] = '<font color="red">e-mail</font>';
$empty_input[5] = '<font color="red">бла-бла-бла</font>';
$empty_input[6] = '<font color="red">бла-бла-бла</font>';
echo "<H4 align=center>Пожалуйста, заполните указанные ниже поля<br></H4>";
for ($i=0; $i<count($_POST['input_name']); $i++) {
$_POST['input_name'][$i] = substr(htmlspecialchars(trim($_POST['input_name'][$i])), 0, 100000);
if(substr(htmlspecialchars(trim($_POST['check'][$i])), 0, 1) == 1) {
if(empty($_POST['input_name'][$i])) {
$sendemail = 'No';
echo '<br />Необходимо заполнить поле: '.$empty_input[$i].'';
}
}
}


$YourMail=$_POST['input_name'][4];
if (!preg_match("/^(?:[a-z0-9]+(?:[-_]?[a-z0-9]+)?@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",trim($YourMail)))
{echo "<br><b>Введенный вами адрес e-mail (<a href=\"mailto:$YourMail\">$YourMail</a>) имеет неправильный формат.<b>";
$sendemail = 'No';
}

if (empty($_POST['code']) or empty($_SESSION['code'])) {
echo '<br><b>Вы не указали код подтверждения</b>';
$sendemail = 'No';
} elseif ($_POST['code'] != $_SESSION['code']) {
echo '<br><b>Код подтверждения не совпадает</b>';
$sendemail = 'No';
}

if($sendemail == 'No') show_form();
$mess = '';
$mess .= '<b>Ваше имя: </b>'.$_POST['input_name'][0].'<br />';
$mess .= '<b>бла-бла-бла: </b>'.$_POST['input_name'][1].'<br />';
$mess .= '<b>бла-бла-бла: </b>'.$_POST['input_name'][2].'<br />';
$mess .= '<b>бла-бла-бла: </b>'.$_POST['input_name'][3].'<br />';
$mess .= '<b>e-mail: </b>'.$_POST['input_name'][4].'<br />';
$mess .= '<b>бла-бла-бла: </b>'.$_POST['input_name'][5].'<br />';
$mess .= '<b>бла-бла-бла: </b>'.$_POST['input_name'][6].'<br />';
$mess .= '<b>бла-бла-бла: </b>'.$_POST['input_name'][7].'<br />';
$mess .= "дата: ".date("Y-m-d")."\n";
$mess .= "время: ".date("H:i");

require 'class.phpmailer.php';

$mail = new PHPMailer();
$mail->From = $YourMail;
$mail->FromName = $_POST['input_name'][0];
$mail->AddAddress('vasya@rambler.ru', 'vasyas@rambler.ru');
$mail->IsHTML(true);
$mail->Subject = 'выставить счет';
$mail->Body = $mess;

if(isset($_FILES['attachfile'])) {
if($_FILES['attachfile']['error'] == 0){
$mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
}
}

if($sendemail != 'No'){

if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
// при отправке письма, в блок DIV кроме echo 'Сообщение отправлено…, также запихивается и вся страница.
echo "<H3 align=left>Сообщение отправленно...<br>
Через 5 секунд, страница обновится автоматически... </H3>
<META HTTP-EQUIV=
\"Refresh\" CONTENT=\"5; URL=../?page=oplata_\">";
}
}

if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
Быстрый ответ:

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