Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2012, 20:31   #1
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию Форма обратной связи не отправляет

Скачал отсюда http://ruseller.com/lessons.php?rub=37&id=194 форму обратной связи. Она пишет, что все отправлено, а на мыло письмо не приходит.

PHP-скрипт такой:

PHP код:
<?php
//Если форма отправлена
if(isset($_POST['submit'])) {
    
//Проверка Поля ИМЯ
    
if(trim($_POST['contactname']) == '') {
        
$hasError true;
    } else {
        
$name trim($_POST['contactname']);
    }
    
//Проверка поля ТЕМА
    
if(trim($_POST['subject']) == '') {
        
$hasError true;
    } else {
        
$subject trim($_POST['subject']);
    }
    
//Проверка правильности ввода EMAIL
    
if(trim($_POST['email']) == '')  {
        
$hasError true;
    } else if (!
eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$"trim($_POST['email']))) {
        
$hasError true;
    } else {
        
$email trim($_POST['email']);
    }
    
//Проверка наличия ТЕКСТА сообщения
    
if(trim($_POST['message']) == '') {
        
$hasError true;
    } else {
        if(
function_exists('stripslashes')) {
            
$comments stripslashes(trim($_POST['message']));
        } else {
            
$comments trim($_POST['message']);
        }
    }
    
//Если ошибок нет, отправить email
    
if(!isset($hasError)) {
        
$emailTo 'mymail@mail.ru'//Сюда введите Ваш email
        
$body "Name: $name \n\nEmail: $email \n\nSubject: $subject \n\nComments:\n $comments";
        
$headers 'From: My Site <'.$emailTo.'>' "\r\n" 'Reply-To: ' $email;
        
mail($emailTo$subject$body$headers);
        
$emailSent true;
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
    <title>Демо</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
<script src="jquery.min.js" type="text/javascript"></script>
<script src="jquery.validate.pack.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#contactform").validate();
});
</script>
<style type="text/css">
body {
    font-family:Arial, Tahoma, sans-serif;
}
#contact-wrapper {
    width:430px;
    border:1px solid #e2e2e2;
    background:#f1f1f1;
    padding:20px;
}
#contact-wrapper div {
    clear:both;
    margin:1em 0;
}
#contact-wrapper label {
    display:block;
    float:none;
    font-size:16px;
    width:auto;
}
form#contactform input {
    border-color:#B7B7B7 #E8E8E8 #E8E8E8 #B7B7B7;
    border-style:solid;
    border-width:1px;
    padding:5px;
    font-size:16px;
    color:#333;
}
form#contactform textarea {
    font-family:Arial, Tahoma, Helvetica, sans-serif;
    font-size:100%;
    padding:0.6em 0.5em 0.7em;
    border-color:#B7B7B7 #E8E8E8 #E8E8E8 #B7B7B7;
    border-style:solid;
    border-width:1px;
}
</style>
</head>
<body>
    <div id="contact-wrapper">
    <?php if(isset($hasError)) { //Если найдены ошибки ?>
        <p class="error">Проверьте, пожалуйста, правильность заполения всех полей.</p>
    <?php ?>
    <?php if(isset($emailSent) && $emailSent == true) { //Если письмо отправленл ?>
        <p><strong>Email успешно отправлен!</strong></p>
        <p>Спасибо  <strong><?php echo $name;?></strong> за использование контактной формы! Ваш email был отправлен и я свяжусь с Вами в кратчайшие сроки.</p>
    <?php ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="contactform">
        <div>
            <label for="name"><strong>Имя:</strong></label>
            <input type="text" size="50" name="contactname" id="contactname" value="" class="required" />
        </div>
        <div>
            <label for="email"><strong>Email:</strong></label>
            <input type="text" size="50" name="email" id="email" value="" class="required email" />
        </div>
        <div>
            <label for="subject"><strong>Тема:</strong></label>
            <input type="text" size="50" name="subject" id="subject" value="" class="required" />
        </div>
        <div>
            <label for="message"><strong>Сообщение:</strong></label>
            <textarea rows="5" cols="50" name="message" id="message" class="required"></textarea>
        </div>
        <input type="submit" value="Send Message" name="submit" />
    </form>
    </div>
</body>
</html>
Ну и еще два js-скрипта, но они врядли представляют интерес в этом случае.

Пробовал ее в денвере запускать - тоже не работает. Что интересно, в денвере у меня и "тестовая заглушка sendmail()" не работает. В чем дело может быть? Она ж тоже пишет, что все успешно отправлено, а на мыле, указанном в качестве адреса для отправки - нифига нет.
fs444 вне форума Ответить с цитированием
Старый 10.05.2012, 20:40   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от fs444 Посмотреть сообщение
Она пишет, что все отправлено, а на мыло письмо не приходит.

Пробовал ее в денвере запускать - тоже не работает. Что интересно, в денвере у меня и "тестовая заглушка sendmail()" не работает. В чем дело может быть? Она ж тоже пишет, что все успешно отправлено, а на мыле, указанном в качестве адреса для отправки - нифига нет.
Почта в Denwer
Andkorol вне форума Ответить с цитированием
Старый 11.05.2012, 22:57   #3
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

У меня есть хостинг, на который я могу для проверки залить скрипт, так на нем тоже пишет, что все отправлено, а на деле нифига. В чем дело может быть? Ведь с скрипте из настроек - только почту надо поставить, на которую будет отсылаться заявка?
fs444 вне форума Ответить с цитированием
Старый 11.05.2012, 23:09   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Это потому, что вас в коде нет проверки - отрабатывает ли сама функция mail.
Сообщение об отправке выводится независимо от этого фактора - и потому оно не показательно.

На многих бесплатных и недорогих хостингах функция mail отключена совсем - в целях борьбы со спамерами.
Andkorol вне форума Ответить с цитированием
Старый 25.05.2014, 18:14   #5
Андрей24ru
 
Регистрация: 25.05.2014
Сообщений: 7
По умолчанию

День Добрый.
Прошу помощи в данной ситуации!
Установил форму обратной связи. Не отправляет сообщения, в итоге.
Форма по ссылке.
http://ooopromrezerv.ru/sviaz.html
Андрей24ru вне форума Ответить с цитированием
Старый 29.05.2014, 16:53   #6
Андрей24ru
 
Регистрация: 25.05.2014
Сообщений: 7
По умолчанию

Что помочь, не кому?
Андрей24ru вне форума Ответить с цитированием
Старый 29.05.2014, 16:59   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Чем помочь – если никаких данных нет?
Где код обработчика формы?
Каковы результаты отладки?
Andkorol вне форума Ответить с цитированием
Старый 29.05.2014, 17:03   #8
Андрей24ru
 
Регистрация: 25.05.2014
Сообщений: 7
По умолчанию

этот код находится в файле. sviaz.html
PHP код:
<form action="mail.php" method="post" class="text_forma" >
        Ваше имя:<br />
        <input type="text" name="name" size="25" title="Введите ваше имя" />
        <br />
        Ваш e-mail (для ответа):<br />
        <input type="text" name="email" size="25"/>
        <br />
        Ваш вопрос:<br />
        <textarea name="mess" cols="25" rows="3" ></textarea>
        <br />
        Введите два любых ненулевых   числа и их сумму: <br />
        <input name="a" type="text" size="3"  value="" />
        плюс
        <input name="b" type="text" size="3"
         value="" />
        равно
        <input name="sum" type="text" size="5"
         value="" />
        <br />
        <br />
        <input type="submit" value="Отправить сообщение" />
      </form>



Этот код находится. в файле. mail.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
<title>Обратная связь</title>
</head>
<body >
<?php
if (isset($_POST['name'])) {$name $_POST['name'];}
if (isset(
$_POST['email'])) {$email $_POST['email'];}
if (isset(
$_POST['mess'])) {$mess $_POST['mess'];}
if (isset(
$_POST['a'])) {$a $_POST['a'];}
if (isset(
$_POST['b'])) {$b $_POST['b'];}
if (isset(
$_POST['sum'])) {$sum $_POST['sum'];}

if (empty(
$name))//Проверка ввода имени
{
echo 
"<b>Не указано имя!<p>";//Если не введено имя, выводим сообщение
echo "<a href=sviaz.html>Вернуться к заполнению формы</a>";
}
else
if (empty(
$email))//Проверка ввода email
{
echo 
"<b>Не указан e-mail!<p>";
echo 
"<a href=sviaz.html>Вернуться к заполнению формы</a>";
}
else
if (empty(
$mess))//Проверка ввода текста сообщения
{
echo 
"<b>Сообщение не написано!<p>";
echo 
"<a href=sviaz.html>Вернуться к заполнению формы</a>";
}
else
{
$s $a $b;//Присваиваем переменной $s значение суммы a+b
if (empty($s))//Проверка ввода чисел
{
echo 
"<b>Не введены числа или сумма равна нулю!<p>";
echo 
"<a href=sviaz.html>Вернуться к заполнению формы</a>";
}
else
if (
$s != $sum)//Сравниваем значение суммы с введенным посетителем сайта
{
echo 
"<b>Введите правильно сумму!<p>";//Если результаты разные, выводим сообщение об ошибке
echo "<a href=sviaz.html>Вернуться к заполнению формы</a>";
}
else
//Если результаты совпадают, отправляем письмо
{
$to "shapov_@mail.ru"//Укажите ваш адрес электронной почты
$headers "Content-type: text/plain; charset = windows-1251";
$subject "Сообщение с вашего сайта";
$message "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send mail ($to$subject$message$headers);
if (
$send == 'true')
{
echo 
"<b>Спасибо за отправку вашего сообщения!<p>";
}
else
{
echo 
"<p><b>Сообщение не отправлено. Приносим свои извинения.";
echo 
"<p><b>Попробуйте повторить отправку позже.";
echo 
"<a href=sviaz.html>Вернуться к заполнению формы</a>";
}
}
}
?>
</body>
Обратную связь первый раз вставил. Много пересмотрел. самый простой выбрал. Должно всё работать. но тишина. сообщение не отправлено и всё.

Последний раз редактировалось Stilet; 29.05.2014 в 17:08.
Андрей24ru вне форума Ответить с цитированием
Старый 29.05.2014, 17:06   #9
Андрей24ru
 
Регистрация: 25.05.2014
Сообщений: 7
По умолчанию

ЗА ранее. Благодарен. Даже если не разрулим!
Андрей24ru вне форума Ответить с цитированием
Старый 29.05.2014, 17:16   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Здесь неверно:
PHP код:
if ($send == 'true'
Должно быть так:
PHP код:
if ($send == true
Из-за этого выводится сообщение об ошибке отправки – хотя сам email при этом вполне может быть отправлен.
Что стоит проверить, в том числе в папках «Спам».
Если нет – то нужно выполнить пошаговую отладку кода, проверить наличие всех переменных и их значения.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма обратной связи на сайте lines Фриланс 18 27.02.2012 05:10
Форма обратной связи Cone PHP 9 07.12.2011 07:47
Php форма обратной связи OgStyle Помощь студентам 4 03.01.2011 17:13
Форма обратной связи margo_31 Помощь студентам 6 20.09.2009 20:38
Форма обратной связи belvision PHP 5 10.11.2008 16:57