Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Если посетитель неправильно набрал e-mail, то сообщение не доходит
 
 автор: IrinaVS   (20.11.2008 в 17:55)   письмо автору
2.2 Кб
 
 

Подскажите, пожалуйста, что у меня неправильно в скрипте для отправки почты на e-mail

Проблема в том, что если посетитель неправильно набрал e-mail, то сообщение не доходит
Я чайник, помогите, ПЛЗ!

код файла zakaz.html с формой

<h1 class="H1">ФОРМА ЗАКАЗА</h1>
<form action="/sendmail.php" method="post" name="form1" target="_blank" id="form1">
<table width="80%" border="0" cellpadding="0" cellspacing="0" class="table">
<tr>
<td width="27%">Ваше имя * </td>
<td width="73%"><label>
<input name="name" type="text" id="name" size="20" maxlength="25" />
<br />
</label></td>
</tr>
<tr>
<td>Ваш E-mail * </td>
<td><label>
<input name="email" type="text" id="email" size="20" maxlength="25" />
<br />
</label></td>
</tr>
<tr>
<td>Телефон, факс </td>
<td><label>
<input name="tel" type="text" id="tel" size="20" maxlength="25" />
<br />
</label></td>
</tr>
<tr>
<td>Ваш запрос * </td>
<td><label>
<textarea name="vopros" cols="40" rows="10" id="vopros"></textarea>
</label></td>
</tr>
</table>
<p>
<label>
<input name="send" type="submit" id="send" value="Отправить" />
</label>
</p>
</form>
<p class="text">* Поля, обязательные для заполнения. Внимание! Если Вы не заполните эти поля, заказ до нас не дойдет! </p>
<table width="90%" border="0" cellspacing="0" cellpadding="0">
</table>

код файла со скриптом sendmail.php

<?php
$recipient="7379248@mail.ru";
$subject="Вопрос с сайта";
$message="$name спрашивает:\n";
$message.="$vopros\n";
$message.="E-mail отправителя: $email";
$message.="Телефон: $tel";
$headers="From: $email\n";
$headers.="X-Sender: $email\n";
$email = "q@q";
if ($email) {
if (mail ($recipient, $subject, $message, $headers)) {
print ("<h3><center>$name, Ваш вопрос отправлен. Ждите ответа!</center></h3>\n");
}}
else{
print ("<h3><center>$name, Вы не указали свой электронный адрес!</center></h3>\n");
}
?>

  Ответить  
 
 автор: cheops   (20.11.2008 в 18:03)   письмо автору
 
   для: IrinaVS   (20.11.2008 в 17:55)
 

Все правильно, а вы какое ожидаете поведение от скрипта. Куда должно приходить письмо, если адрес не правильный и не существует?

  Ответить  
 
 автор: Valick   (20.11.2008 в 18:33)   письмо автору
 
   для: cheops   (20.11.2008 в 18:03)
 

Куда должно приходить письмо
Известно куда... на деревню дедушке

  Ответить  
 
 автор: IrinaVS   (21.11.2008 в 08:43)   письмо автору
 
   для: cheops   (20.11.2008 в 18:03)
 

Я не то имела ввиду...Хочется, чтобы, если посетитель наберет неправильный СВОЙ адрес в графе "Ваш e-mail" письмо не пропадало, а выскакивала фраза "Вы ввели неправильный e-mail"

  Ответить  
 
 автор: IrinaVS   (21.11.2008 в 08:46)   письмо автору
 
   для: cheops   (20.11.2008 в 18:03)
 

else{
print ("<h3><center>$name, Вы не указали свой электронный адрес!</center></h3>\n");
}

Тогда для чего вот это выражение?? Чего то я не поняла...

  Ответить  
 
 автор: sim5   (21.11.2008 в 08:52)   письмо автору
 
   для: IrinaVS   (21.11.2008 в 08:46)
 

Это только указывает на пустое поле формы, а не на то, что адрес указанный в нем реальный. Я ведь могу написать в поле и: tufta@tufta.xaxa. Теперь попробуйте отослать на этот адрес письмо. Sendmail отпавит в любом случае по указанному адресу сообщение ("синтаксис" ввода адреса почтового можно проверить), а вот существует ли такой адрес реально Sendmail не проверяет.

  Ответить  
 
 автор: IrinaVS   (21.11.2008 в 09:07)   письмо автору
 
   для: sim5   (21.11.2008 в 08:52)
 

Я наверное уже надоела со своими глупыми вопросами, но при данном коде, даже если не заполнить поле "Ваш e-mail" Выскакивает "Ваш запрос отправлен, ждите ответа!" , а не "Вы не заполнили поле E-mail" То есть письмо уходит, посетитель в уверенности, что он отправил запрос на товар, а письмо то не доходит на наш адрес, а где то теряется......

  Ответить  
 
 автор: sim5   (21.11.2008 в 09:12)   письмо автору
 
   для: IrinaVS   (21.11.2008 в 09:07)
 

Ну если говорить о самой проверке, то введен адрес или нет, нужно проверять и сообщать об этом пользователю до отправки сообещения, а не во время ее. То есть, вот этот подход в коде:
<?
if ($email) {
if (
mail ($recipient$subject$message$headers)) {
print (
"<h3><center>$name, Ваш вопрос отправлен. Ждите ответа!</center></h3>\n");
}}
else{
print (
"<h3><center>$name, Вы не указали свой электронный адрес!</center></h3>\n");
}

в корне не верен. Вы должны сперва проверить заполнение формы, и правильность заполнения всех ее полей, и уж только после этого отправлять сообщение.

  Ответить  
 
 автор: AcidTrash   (20.11.2008 в 21:48)   письмо автору
 
   для: IrinaVS   (20.11.2008 в 17:55)
 

Элементарную проверку на корректность email, если он важен, не пробовали сделать?
Можно было воспользоваться поиском на форуме и найти.
К примеру
http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=22051

UPD. Правда здесь не нужен символ _ в домене.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования