Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для avdsm
2 / 2 / 1
Регистрация: 20.01.2013
Сообщений: 82

Отправка формы на E-mail

15.03.2014, 18:16. Показов 1526. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нуждаюсь помощи!
Создал форму на главной странице сайта.
После нажатие на кнопку содержимое формы отправляется на почту, однако сообщения о том что
Ваше сообщение было успешно отправлено!
выводится на новой пустой странице.
Как можно сделать, чтобы это сообщение выводилось на главной странице именно на месте формы?
Это касается и всех сообщений об ошибке заполнения формы.
Для отправки письма использовал код ниже:
PHP/HTML
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
/* Осуществляем проверку вводимых данных и их защиту от враждебных 
скриптов */
$your_name = htmlspecialchars($_POST["your_name"]);
$email = htmlspecialchars($_POST["email"]);
$tema = htmlspecialchars($_POST["tema"]);
$message = htmlspecialchars($_POST["messages"]);
/* Устанавливаем e-mail адресата */
$myemail = "my_email@mail.ru";
/* Проверяем заполнены ли обязательные поля ввода, используя check_input 
функцию */
$your_name = check_input($_POST["your_name"], "Введите ваше имя!");
$tema = check_input($_POST["tema"], "Укажите тему сообщения!");
$email = check_input($_POST["email"], "Введите ваш e-mail!");
$message = check_input($_POST["message"], "Вы забыли написать сообщение!");
/* Проверяем правильно ли записан e-mail */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("<br /> Е-mail адрес не существует");
}
/* Создаем новую переменную, присвоив ей значение */
$message_to_myemail = "Здравствуйте! 
Вашей контактной формой было отправлено сообщение! 
Имя отправителя: $your_name 
E-mail: $email 
Текст сообщения: $message 
Конец";
/* Отправляем сообщение, используя mail() функцию */
$from  = "From: $yourname <$email> \r\n Reply-To: $email \r\n"; 
mail($myemail, $tema, $message_to_myemail, $from);
?>
<p>Ваше сообщение было успешно отправлено!</p>
<p>На <a href="index.php">Главную >>></a></p>
<?php
/* Если при заполнении формы были допущены ошибки сработает 
следующий код: */
function check_input($data, $problem = "")
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<p>Пожалуйста исправьте следующую ошибку:</p>
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.03.2014, 18:16
Ответы с готовыми решениями:

Отправка формы на e-mail
Доброго здравия, вопрос к знающим и умеющим. Ребят есть форма определенная к примеру поля 1 поле 2 и поле 3 соответственно, снизу кнопка...

Отправка e-mail из формы
Навеяло отсюда: https://www.cyberforum.ru/php-beginners/thread636238-page3.html Ребята, может не туда лезу, но может подскажете - есть...

Отправка формы по e-mail на PHP
Настроен локальный сервер Apache 2.2+PHP 5.2.17. Нужно отправить данные из формы по электронной почте. Сразу ругался на функцию mail()....

11
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
15.03.2014, 19:38
тут 2 варианта
1- ajax (без перезагрузки страницы)
2 - session (с перезагрузкой)
но в любом случае, код нужно будет корректировать
0
 Аватар для SLameN
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
15.03.2014, 19:44
Action сделать на эту же страницу. Если sumbit не нажат, то вывести форму, если нажали sumbit то выводить ошибку.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
15.03.2014, 19:57
Цитата Сообщение от SLameN Посмотреть сообщение
Action сделать на эту же страницу. Если sumbit не нажат, то вывести форму, если нажали sumbit то выводить ошибку.
Зачем ошибку?! )))

По сабжу:

index.php
PHP/HTML
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
<?php
$diplay_all_ok = "";
$diplay_all_bad = "";
 
if($_POST['client_name'])
{
    // send_email
    if(success)
    {
        $diplay_all_ok = "style='display:inline-block;' ";
    }
    else
    {
        $diplay_all_bad = "style='display:inline-block;' ";
    }
} 
?>
 
<div class="email_send" <?php echo $diplay_all_ok; ?> >всё ок</div>
<div class="email_send" <?php echo $diplay_all_bad; ?> >всё не ок</div>
    // в css email_send - display:none;
<form action="index.php" method="POST">
<input ... name='client_name'>
....
</form>
0
3 / 13 / 3
Регистрация: 09.11.2013
Сообщений: 77
16.03.2014, 01:14
я бы сделал через ajax
0
 Аватар для avdsm
2 / 2 / 1
Регистрация: 20.01.2013
Сообщений: 82
16.03.2014, 01:51  [ТС]
А как на счет защиты от ботов. Каптча не нужна?
0
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958
16.03.2014, 13:06
Как на меня то -
1 - использовать обработчик формы прям в файле с формой совсем не красиво
2 - использовать сессии для такой простой задачи как то рука не подымается

Я реализую это так -

отправили форму -> в обработчике отпраляем письмо, в случаи удачи создадим куку с кодом удачи и сделаем редирект на главную страницу -
PHP
1
2
3
setcookie("otvet", 101, time()+1, "/");
    header("Location: ../index.php");
    exit();
Теперь на главной страницы будем ее отлавливать -
PHP
1
if(isset($_COOKIE['otvet'])) if($_COOKIE['otvet'] == 101) echo "модельное окно";
Как то так )))

Добавлено через 3 минуты
так же можно создать куки с кодом ошибки и так же ее отлавливать )
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
16.03.2014, 14:14
Цитата Сообщение от prudkiy Посмотреть сообщение
Как на меня то -
1 - использовать обработчик формы прям в файле с формой совсем не красиво
Вполне нормальное 100% рабочее решение, а то что не красиво, так на главной странице в коде все что между <head>...</head> тоже не красиво, но не писать же это все тоже в куку =)
Цитата Сообщение от prudkiy Посмотреть сообщение
в случаи удачи создадим куку с кодом удачи
Это вообще полная жесть, писать ответы от формы в куку.
Принцип ведь прост: заполнили, нажали на кнопку, отправили. Потом перекинуло на страницу с ответом, там прочитали ответ и хедер вернул нас назад.
Но перед отправкой сделать дополнительную проверку на js

Добавлено через 16 минут
Забыл добавить, отправляем все это дело аяксом, и ним же получаем ответы, ну а если js у кого отключен, форма работает просто на php, и при том работает на все 100%
0
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958
16.03.2014, 14:49
Потом перекинуло на страницу с ответом, там прочитали ответ и хедер вернул нас назад.
но в задачи сказано что сообщение должно быть на месте только что отправленной формы
И то что Вы возможно хорошо знаете AJAX это хорошо, конечно использовать данную технологию лучший вариант, так же и проверку формы с js, но ведь в задачи поставлено именно PHP!
Это вообще полная жесть, писать ответы от формы в куку
- может и жесть, я не говорю что это просто идеал, но Вы перед тем как попрекать скажите Ваш алгоритм решения задачи без применения ajax и js
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
16.03.2014, 15:06
Цитата Сообщение от prudkiy Посмотреть сообщение
Ваш алгоритм решения задачи без применения ajax и js
Согласен, решения кроме куки нет, но ...
Но здесь вопрос в другом, ТС не до конца/неправильно изложил свою мысль, и от нее отталкиваемся.
На личном опыте скажу:
Коим образом у меня на компе браузера мозила перестал по умолчанию принимать куки от сайтов, Я не знаю, но знаю что где-то что-то нужно включить, но Я ним пользуюсь крайне редко, поэтому не включаю. Так вот, предположим такой косяк у юзера который отправляет форму, Вопрос: Что он получит в ответе об ошибке/успехе?
Вариант остается один: делать все на аяксе, и соответственно, все подогнать на php, если вдруг у кого отключен js в браузере, таким образом делаем 100% рабочую форму на всех устройствах
0
 Аватар для avdsm
2 / 2 / 1
Регистрация: 20.01.2013
Сообщений: 82
16.03.2014, 15:12  [ТС]
Задчу решил с помощью AJAX
Все работает отлично, без перезагрузки

JavaScript
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
$(document).ready(function() {
// Форма обратной связи................................./
 
var erorDiv = "<div><img style='margin-bottom:-4px;' src='../load.gif' alt='Отправка...' width='16' height='16'><span style='font: 11px Verdana; color:#333; margin-left:6px;'>Сообщение обрабатывается...</span></div><br />";
 
$("#send").click(function(){
        $("#loadBar").html(erorDiv).show();
        var posName = $("#posName").val();
        var posEmail = $("#posEmail").val();
        var posText = $("#posText").val();
        $.ajax({
            type: "POST",
            url: "../send.php",
            data: {"posName": posName, "posEmail": posEmail, "posText": posText},
            cache: false,
            success: function(response){
        var messageResp = "<p style='font-family:Verdana; font-size:11px; color:green; border:1px solid #00CC00; padding:10px; margin:20px; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; background-color:#fff;'>Спасибо, <strong>";
        var resultStat = "!</strong> Ваше сообщение отправлено!</p>";
        var oll = (messageResp + posName + resultStat);
                if(response == 1){
                $("#loadBar").html(oll).fadeIn(3000);
                $("#posName").val("");
                $("#posEmail").val("");
                $("#posText").val("");
                } else {
        $("#loadBar").html(response).fadeIn(3000); }
                                        }
        });
        return false;
});
 
 
});
0
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958
16.03.2014, 15:30
Вариант остается один: делать все на аяксе, и соответственно, все подогнать на php, если вдруг у кого отключен js в браузере, таким образом делаем 100% рабочую форму на всех устройствах
Повторюсь, согласен это действительно это лучший вариант. Я говорю исходя из того что спросили.

Добавлено через 1 минуту
адчу решил с помощью AJAX
Все работает отлично, без перезагрузки
-
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2014, 15:30
Помогаю со студенческими работами здесь

Отправка формы регистрации на e-mail
Здравствуйте! У меня возникла проблема. Не знаю, как сделать так, чтобы форма отправлялась на e-mail только после того, как все данные...

Отправка сообщений из формы по e-mail
Привет всем!!! мне дали задание: Сделать HTML Страничку как отправления сообщения нуууу там имя эиэйл и сообщение!!!! Форму методом GET. и...

Отправка e-mail с данными из формы
На лендинге есть форма заявки, в файле index она выглядит так &lt;div class=&quot;btnHead clearfix&quot; id=&quot;zakaz&quot;&gt; ...

Отправка содержимого формы по E-Mail
Ситуация следующая. С PHP никогда раньше не работал, и глубоко вникать в него на данный момент времени смысла для себя не вижу, поэтому...

Отправка письма на mail.ru через PHP mail()
Добрый день! Перелопатил много чего. Подскажите как все-таки отправить письмо на мэил.ру при помощи маил()? Может какие-то особенные...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru