Перейти к содержимому

Фотография
- - - - -

PHP форма обратной связи


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 7

#1 Pona Monce

Pona Monce

    Прохожий

    Топикстартер
  • Новичок
  • 0
    4 сообщ.

Отправлено 30 Январь 2018 в 21:08

Доброго времени суток! Помогите разобраться, имеем код HTML и PHP, форма обратной связи, при заполнении и отправке формы выходит ошибка "Error sending email."
Что не так?(
<section class="flat-row parallax parallax4" id="contact" style="background-position: 50% 177px;">





<div class="row-overlay"></div>
<div class="container">
<div class="row">
<div class="col-sm-5">
<div class="title-section style2">
<h1 class="title">Задайте свой вопрос?</h1>
<div class="p-section">
<p>
Наш менеджер с радостью ответит на все Ваши вопросы<br>и проконсультирует Вас по нужным Вам товарам и услугам.
</p>
</div>
</div>
</div>
<div class="col-sm-7">
<form action="contact-process.php" method="post" id="contactform" class="requestform" novalidate="novalidate">
<p class="author">
<label for="discuss">Чем мы можем помочь?</label>
<select name="discuss" id="discuss" required="required">
<option value="">Вопрос по продукции</option>
<option value="02">Вопрос по сотрудничеству</option>
<option value="03">Другой вопрос</option>
</select>
</p>
<p class="name">
<label for="name">Ваше Имя*</label>
<input id="name" name="name" type="text" aria-required="true" required="required">
</p>
<p class="phone">
<label for="discuss">Ваш номер телефона*</label>
<input id="phone" name="phone" type="text" value="" aria-required="true" required="required">
</p>
<p class="email">
<label for="discuss">Ваша электронная почта</label>
<input id="email" name="email" type="email" value="" aria-required="true" required="required">
</p>
<p class="form-submit">
<button class="flat-button bg-theme">Отправить</button>
</p>
</form>
</div>
</div>
</div>
</section>
<?php

$address = "webframe.ru@gmail.com";
if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");
$error = false;
$fields = array( 'name', 'email', 'subject', 'message' );
foreach ( $fields as $field ) {
    if ( empty($_POST[$field]) || trim($_POST[$field]) == '' )
        $error = true;
}
if ( !$error ) {
    $name = stripslashes($_POST['name']);
    $email = trim($_POST['email']);
    $subject = stripslashes($_POST['subject']);     
    $message = stripslashes($_POST['message']);
    
    $e_subject = 'You\'ve been contacted by ' . $name . '.';
    $e_body = "You have been contacted by: $name" . PHP_EOL . PHP_EOL;
    $e_reply = "E-mail: $email" . PHP_EOL . PHP_EOL;
    $e_subject = "\r\nsubject: $subject";   
    $e_content = "Message:\r\n$message" . PHP_EOL . PHP_EOL;
    $msg = wordwrap( $e_body . $e_reply .$e_subject , 70 );
    $headers = "From: $email" . PHP_EOL;
    $headers .= "Reply-To: $email" . PHP_EOL;
    $headers .= "MIME-Version: 1.0" . PHP_EOL;
    $headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
    $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;
    if(mail($address, $e_subject, $msg, $headers)) {
        echo 'Success';
    } else {
        echo 'ERROR!';
    }
}
?>

  • 0

Спонсор

#2 BaNru

BaNru

    Пацифизжу

  • суперМодератор
  • 1004
    3 630 сообщ.

Отправлено 31 Январь 2018 в 01:01

Вы в строке $address адрес указали правильное мыло?


  • 0

#3 Pona Monce

Pona Monce

    Прохожий

    Топикстартер
  • Новичок
  • 0
    4 сообщ.

Отправлено 31 Январь 2018 в 01:46

Вы в строке $address адрес указали правильное мыло?

да, все верно
  • 0

#4 BaNru

BaNru

    Пацифизжу

  • суперМодератор
  • 1004
    3 630 сообщ.

Отправлено 31 Январь 2018 в 02:41

1) А сервер точно умеет отправлять емейлы? Может там заблокирована эта функция или вы отсылаете с локального неправильно настроенного сервера?

 

2) Попробуйте в начале PHP файла поставить отображение ошибок (после  <?PHP, новой строкой)

error_reporting(E_ALL);
ini_set("display_errors", 1);

Они могут вывести на экран более подробную информацию об ошибки.

 

3) Вы уверены что вы пытаетесь отослать письмо через этот скрипт? По идее этот скрипт должен выдавать "Success" или "ERROR!", а не то сообщение, что вы привели в качестве ошибки.


  • 0

#5 Pona Monce

Pona Monce

    Прохожий

    Топикстартер
  • Новичок
  • 0
    4 сообщ.

Отправлено 31 Январь 2018 в 02:57

1) А сервер точно умеет отправлять емейлы? Может там заблокирована эта функция или вы отсылаете с локального неправильно настроенного сервера?

 

2) Попробуйте в начале PHP файла поставить отображение ошибок (после  <?PHP, новой строкой)

error_reporting(E_ALL);
ini_set("display_errors", 1);

Они могут вывести на экран более подробную информацию об ошибки.

 

3) Вы уверены что вы пытаетесь отослать письмо через этот скрипт? По идее этот скрипт должен выдавать "Success" или "ERROR!", а не то сообщение, что вы привели в качестве ошибки.

Это сообщение вылазит из файла main.js 

var ajaxContactForm = function() {
$('#contactform').each(function() {
$(this).validate({
submitHandler: function( form ) {
var $form = $(form),
str = $form.serialize(),
loading = $('<div />', { 'class': 'loading' });
$.ajax({
type: "POST",
url: $form.attr('action'),
data: str,
beforeSend: function () {
$form.find('.form-submit').append(loading);
},
success: function( msg ) {
var result, cls;
if ( msg == 'Success' ) {
result = 'Message Sent Successfully To Email Administrator. ( You can change the email management a very easy way to get the message of customers in the user manual )';
cls = 'msg-success';
} else {
result = 'Error sending email.';
cls = 'msg-error';
}
$form.prepend(
$('<div />', {
'class': 'flat-alert ' + cls,
'text' : result
}).append(
$('<a class="close" href="#"><i class="fa fa-close"></i></a>')
)
);
$form.find(':input').not('.submit').val('');
},
complete: function (xhr, status, error_thrown) {
$form.find('.loading').remove();
}
});
}
});
}); // each contactform
};

  • 0

#6 BaNru

BaNru

    Пацифизжу

  • суперМодератор
  • 1004
    3 630 сообщ.

Отправлено 31 Январь 2018 в 03:26

Тогда я рекомендую отключить этот файл и отправить напрямую.

Посмотреть что напишет сервер, причину ошибки.


  • 0

#7 Pona Monce

Pona Monce

    Прохожий

    Топикстартер
  • Новичок
  • 0
    4 сообщ.

Отправлено 31 Январь 2018 в 03:43

Тогда я рекомендую отключить этот файл и отправить напрямую.

Посмотреть что напишет сервер, причину ошибки.

Если выключить, то после нажатия кнопки ОТПРАВИТЬ сразу кидает на страницу PHP файла. На почту ничего не приходит. :( Что ж не так то?(

 

А сервер точно отправляет , есть еще одна форма обратного звонка, она работает отлично. 


  • 0

#8 BaNru

BaNru

    Пацифизжу

  • суперМодератор
  • 1004
    3 630 сообщ.

Отправлено 31 Январь 2018 в 04:43

Оно и должно кидать на файл, всё верно.

Но я выше говорил вбить 2 строки для отлова ошибок.

Они покажут ошибки.

 

Хотя они и не помогут. Вы, судя по скрипту, меняли названия полей.

В форме идёт проверка 4 полей (6-10 строки): 'name', 'email', 'subject', 'message'.

У вас же 3 поля 'name', 'phone', 'email', при этом последних двух нет, поэтому условие в котором идёт отправка (
if ( !$error )) не срабатывает.

 

То есть, если в конце скрипта написать альтернативное условие (else), то оно сработает

if ( !$error ) {
   //...тут ваш скрипт отправки...
} else {
   echo 'ошибка заполнения полей';
}

Если вам не нужны старые поля, то их надо удалять ВЕЗДЕ в PHP файле.

И вместо них писать новые ваши.


  • 0



Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение
Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей