0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 10
1

Почему не отправляется форма обратной связи?

16.07.2016, 16:01. Показов 1000. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
$q3 = htmlspecialchars($_POST["q3"]);
$q6 = htmlspecialchars($_POST["q6"]);
$q1 = htmlspecialchars($_POST["q1"]);
$q2 = htmlspecialchars($_POST["q2"]);
 
 
$address = "erbilhotel@mail.ru";
$sub = "Сообщение с Вашего сайта";
 
 
$mes = "Сообщение с сайта ХХХ.\n
Имя заказчика: $q1 
Телефон заказчика: $q2
Тип смартфона: $q3
Проблема:$q6
$message";
 
 
 if (mail($address, $sub, $mes)) {
    header('Refresh: 5; URL=http://services.kzset.kz');
    echo 'Письмо отправлено, через 5 секунд вы вернетесь на сайт';}
else {
    header('Refresh: 5; URL=http://services.kzset.kz');
    echo 'Письмо не отправлено, через 5 секунд вы вернетесь на страницу сайта';}
 
?>

Выдает что письмо не отправлено
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2016, 16:01
Ответы с готовыми решениями:

Как сделать чтоб форма обратной связи не отправляла письмо если форма не заполнена
Добрый день. Подскажите пожалуйста как сделать чтоб форма обратной связи не отправляла письмо если...

Форма обратной связи
Здравствуйте! Есть код формы, нужно, чтобы все что заполняется отправлялось ко мне на почту....

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

Форма обратной связи
Не работает форма обратной связи :(. Выкидывает на страницу ошибки, которую я сам и создал. Сам я...

11
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
16.07.2016, 16:21 2
Где запускаете скрипт? Локально, на хостинге? Если последнее, можно уточнить у техподдержки, есть ли ограничения на отправку почты.
0
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 10
16.07.2016, 16:27  [ТС] 3
На хостинге, SMTP есть у них вроде. PHP все верно?
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
16.07.2016, 16:51 4
Цитата Сообщение от Tashen-K Посмотреть сообщение
PHP все верно?
Да.
Цитата Сообщение от Tashen-K Посмотреть сообщение
SMTP есть у них вроде.
Используйте лучше SMTP в таком случае. Функция mail к SMTP не относится. Используйте PhpMailer или SwiftMailer, чтобы с нуля не писать клиент.
0
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 10
16.07.2016, 17:39  [ТС] 5
Я в php полный 0 =))) Подскажите, это как? Что поменять?
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
16.07.2016, 18:08 6
Tashen-K, тот сайт вроде большой, может там уже есть библиотека для отправки почты?
Если нет, то нужно установить. По-хорошему, лучше устанавливать через composer, как положено. Но раз такая ситуация -- поступим проще.
Для начала надо посмотреть, как будет вести себя скрипт, при обычной отправке с помощью phpMailer, без SMTP.
Скопируйте вот этот код: https://raw.githubusercontent.... mailer.php
Только всё, до последней скобки. И впишите его в отдельный файл (class.phpmailer.php).
Затем поменяйте Ваш скрипт на такой:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
    require 'путь/к/файлу/class.phpmailer.php';
 
    $q3 = isset($_POST["q3"]) ? $_POST["q3"] : null;
    $q6 = isset($_POST["q6"]) ? $_POST["q6"] : null;
    $q1 = isset($_POST["q1"]) ? $_POST["q1"] : null;
    $q2 = isset($_POST["q2"]) ? $_POST["q2"] : null;
 
    # Получаем объект отправки почты
    $mailer = new PHPMailer;
 
    # От кого
    $mailer->setFrom('почта, от кого');
 
    # Тема письма
    $mail->Subject = "Сообщение с Вашего сайта";
 
    # Куда отправляем
    $mail->addAddress("erbilhotel@mail.ru");
 
    # Сообщение
    $mail->Body = "Сообщение с сайта ХХХ.\n
    Имя заказчика: {$q1}\n
    Телефон заказчика: {$q2}\n
    Тип смартфона: {$q3}\n
    Проблема:\n{$q6}\n";
    
    # Отправляем
    if ($mailer->send()) {
        header('Refresh: 5; URL=http://services.kzset.kz');
        echo 'Письмо отправлено, через 5 секунд вы вернетесь на сайт';
    }
    else {
        header('Refresh: 5; URL=http://services.kzset.kz');
        echo 'Письмо не отправлено, через 5 секунд вы вернетесь на страницу сайта';
    }
Только путь к файлу пропишите и обязательно укажите в качестве отправителя (от кого) реальную почту, зарегистрированную на Вашем хостинге.
0
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 10
19.07.2016, 00:11  [ТС] 7
Извините, все сделала, но выдает такую ошибку

Fatal error: require(): Failed opening required 'http://var/www/v-640/data/www/services.kzset.kz/contact-form.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/v-640/data/www/services.kzset.kz/contact-form.php on line 2

У техподдержки уточнила точный адрес, но все-равно выдает ошибку(( что я не так делаю?
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
19.07.2016, 06:35 8
Что-то я названия переменных перепутал. На строках 16, 19 и 22 замените $mail на $mailer.

А зачем Вы http:// используете при подключении? Там же путь в файловой системе нужно указать. И второе -- Вы "contact-form.php" подключаете в "contact-form.php". Зачем?
Скорее всего, путь должен выглядеть так:
/var/www/v-640/data/www/services.kzset.kz/libs/class.mailer.php
Только папку "libs" в той же папке, что и файл "contact-form.php", создать не забудьте. А в неё уж тот класс положите.

Добавлено через 1 минуту
PHP
1
require '/var/www/v-640/data/www/services.kzset.kz/libs/class.mailer.php';
Добавлено через 1 минуту
Или так:
PHP
1
require __DIR__.'/libs/class.mailer.php';
0
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 10
20.07.2016, 11:44  [ТС] 9
Fatal error: require(): Failed opening required '/var/www/v-640/data/www/services.kzset.kz/libs/class.mailer.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/v-640/data/www/services.kzset.kz/contact-form.php on line 2

Вот такое выдает(
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
20.07.2016, 11:52 10
1) Проверьте права на файл, установите в 755.
2) Как Вы подключили, с помощью __DIR__ или жёстко прописали? Лучше сделайте с помощью __DIR__. Но обязательно убедитесь, что подключаемый файл точно находится по указанному пути.
0
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 10
21.07.2016, 17:11  [ТС] 11
Цитата Сообщение от Para bellum Посмотреть сообщение
1) Проверьте права на файл, установите в 755.
Сделала, подключает файл, но выдает письмо не отправлено(
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
21.07.2016, 22:17 12
Тогда скопируйте ещё и этот класс:
https://raw.githubusercontent.... s.smtp.php
И не забудьте подключить.

Затем, после этого:
PHP
1
$mailer = new PHPMailer;
Добавьте настройки SMTP:
PHP
1
2
3
4
5
6
7
8
9
$mailer->isSMTP();
$mailer->SMTPAuth = true;
 
# Укажите адрес Вашего SMTP-сервера
$mailer->Host = 'smtp.example.com';
$mailer->Username = 'user@example.com'; # Имя пользователя
$mailer->Password = '1234567'; # Пароль
$mailer->SMTPSecure = 'tls';
$mailer->Port = 25; # Если порт отличается -- поменяйте
В настройках пропишите параметры SMTP, какие Вам укажет хостер.
0
21.07.2016, 22:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2016, 22:17
Помогаю со студенческими работами здесь

Форма обратной связи
Помогите! Форма не отображается после того, как я впишу строчку die();, а если я её убираю, то при...

Форма обратной связи
Доброго времени суток! Сделал вот такую форму! Проблема такая, заполняешь форму и нажимаешь...

Форма обратной связи
Уважаемые, подскажите, использовал следующий код для организации формы обратной связи. Всё успешно...

Форма обратной связи
Приветствую всех! На сайте предполагается форма - имя - телефон - поле для заказа товара. Поле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru