Jump to content
  • Sign Up
Sign in to follow this  
Totalist

Форма обратной связи (помогите доработать)

Recommended Posts

Уважаемы форумчане, помогите, пожалуйста, доработать код.

В форме обратной связи нужно реализовать проверку на заполнение полей "name, email, body" или "name, tel, body" в случае заполнения поля email или поля tel соответственно. Т.е. поля "name, body" обязательны для заполнения, а поля "email, tel" - на выбор одно или оба (но не обязательно).

<div id="openModal" class="modalDialog">

<div>

<a href="#close" title="Закрыть" class="close">X</a>

<h2>Обратная связь</h2>

<form name="MyForm" action="#openModal" method="post"><br>

<input name="name" style="width: 420px" type="text" placeholder="Ваши фамилия, имя, отчество" /><br>

<input name="tel" style="width: 420px" type="tel" placeholder="Ваш номер телефона" /><br>

<input name="email" style="width: 420px" type="email" placeholder="Ваша электронная почта" /><br>

<textarea name="body" style="width: 420px" placeholder="Ваше сообщение"></textarea><br>

<br>Нажимая на кнопку "Отправить", я даю согласие на обработку своих персональных данных в соответствии с <a href="politika.htm" target="_blank">Политикой конфиденциальности</a><br>

<p style="text-align: center"><input type="submit" value="Отправить" id="btnpng4" /></p>

</form>

<?php

if (isset($_POST["email"])){

if (isset($_POST["name"])) {$name = $_POST["name"];}

if (isset($_POST["tel"])) {$tel = $_POST["tel"];}

if (isset($_POST["email"])) {$email = $_POST["email"];}

if (isset($_POST["body"])) {$body = $_POST["body"];}

if($name=="" or $email=="" or $body==""){ // Проверяем на заполненность всех полей.

echo "Заполните все поля";

}else{

$ip=$_SERVER["REMOTE_ADDR"]; // Вычисляем ip пользователя

$brose=$_SERVER["HTTP_USER_AGENT"]; // Вычисляем браузер пользователя

$to = "email"; // Ваш email адрес

$subject = "Сообщение c Вашего сайта"; // тема письма

$headers .= "Content-Type: text/html; charset=windows-1251";

$message = "

Имя: $name<br>

Телефон: $tel<br>

E-mail: $email<br>

Текст: $body<br><br>

——————————————————--<br>

—————IP отправителя: $ip<br>

—————Браузер отправителя: $brose<br>

";

$send = mail($to, $subject, $message, $headers);

if ($send == "true")

{

echo "Ваше сообщение отправлено. Мы ответим вам в ближайшее время.";

}

else

{

echo "Не удалось отправить сообщение, попробуйте снова!";

}

}

}

?>

</div>

</div>

 

Share this post


Link to post
Share on other sites
if (isset($_POST["email"]) || isset($_POST["tel"])){
if (isset($_POST["name"])) {$name = $_POST["name"];}
if (isset($_POST["tel"])) {$tel = $_POST["tel"];}
if (isset($_POST["email"])) {$email = $_POST["email"];}
if (isset($_POST["body"])) {$body = $_POST["body"];}
...

 

Share this post


Link to post
Share on other sites

Switch74, подскажите, пожалуйста, какой фрагмент кода формы обратной связи Вашим заменить?

Share this post


Link to post
Share on other sites
if (isset($_POST["email"])){
if (isset($_POST["name"])) {$name = $_POST["name"];}
if (isset($_POST["tel"])) {$tel = $_POST["tel"];}
if (isset($_POST["email"])) {$email = $_POST["email"];}
if (isset($_POST["body"])) {$body = $_POST["body"];}

Share this post


Link to post
Share on other sites

Switch74, а разве не нужно в строку

if($name=="" or $email=="" or $body==""){ // Проверяем на заполненность всех полей.

написать что-то о поле tel?

Share this post


Link to post
Share on other sites

здесь логичнее будет 
 

if(empty($email) or empty($name) or empty($body)){
  //отправка письма
}
else if(empty($tel) or empty($name) or empty($body)){
  //наверно отправка смс
}
else{
  //не заполнены обязательные поля
}

 

Share this post


Link to post
Share on other sites

Switch74, внес в нижеследующий код  все Ваши поправки. Теперь страница с формой обратной связи не загружается, а вместо этого отображает сообщение:

Цитата

Parse error: syntax error, unexpected

<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Закрыть" class="close">X</a>
<h2>Обратная связь</h2>
<form name="MyForm" action="#openModal" method="post"><br>
<input name="name" style="width: 420px" type="text" placeholder="Ваши фамилия, имя, отчество" /><br>
<input name="tel" style="width: 420px" type="tel" placeholder="Ваш номер телефона" /><br>
<input name="email" style="width: 420px" type="email" placeholder="Ваша электронная почта" /><br>
<textarea name="body" style="width: 420px" placeholder="Ваше сообщение"></textarea><br>
<br>Нажимая на кнопку "Отправить", я даю согласие на обработку своих персональных данных в соответствии с <a href="politika.htm" target="_blank">Политикой конфиденциальности</a><br>
<p style="text-align: center"><input type="submit" value="Отправить" id="btnpng4" /></p>
</form>
<?php
if (isset($_POST["email"]) || isset($_POST["tel"])){
if (isset($_POST["name"])) {$name = $_POST["name"];}
if (isset($_POST["tel"])) {$tel = $_POST["tel"];}
if (isset($_POST["email"])) {$email = $_POST["email"];}
if (isset($_POST["body"])) {$body = $_POST["body"];}
if(empty($email) or empty($name) or empty($body)){
  //отправка сообщения
}
else if(empty($tel) or empty($name) or empty($body)){
  //отправка сообщения
}
else{
  //не заполнены обязательные поля
}else{
$ip=$_SERVER["REMOTE_ADDR"]; // Вычисляем ip пользователя
$brose=$_SERVER["HTTP_USER_AGENT"]; // Вычисляем браузер пользователя
$to = "email"; // Ваш email адрес
$subject = "Сообщение c Вашего сайта"; // тема письма
$headers .= "Content-Type: text/html; charset=windows-1251";
$message = "
Пользователь: $name<br>
Телефон: $tel<br>
E-mail: $email<br>
Текст: $body<br><br>

——————————————————--<br>
—————IP отправителя: $ip<br>
—————Браузер отправителя: $brose<br>

";

$send = mail($to, $subject, $message, $headers);

if ($send == "true")

{

echo "Ваше сообщение отправлено. Мы ответим вам в ближайшее время.";

}

else

{

echo "Не удалось отправить сообщение, попробуйте снова!";

}

}

}

?>

</div>

</div>

Что можно предпринять? Где ошибка?

Share this post


Link to post
Share on other sites

else{
так же вам код нужно будет внести в места комментариев
обработку с указание email

обработку с указание tel

и обработку если не указаны ни email ни tel

Share this post


Link to post
Share on other sites
10 часов назад, Switch74 сказал:

так же вам код нужно будет внести в места комментариев

какой код?

10 часов назад, Switch74 сказал:

обработку с указание

какая обработка?

Share this post


Link to post
Share on other sites
<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Закрыть" class="close">X</a>
<h2>Обратная связь</h2>
<form name="MyForm" action="#openModal" method="post"><br>
<input name="name" style="width: 420px" type="text" placeholder="Ваши фамилия, имя, отчество" /><br>
<input name="tel" style="width: 420px" type="tel" placeholder="Ваш номер телефона" /><br>
<input name="email" style="width: 420px" type="email" placeholder="Ваша электронная почта" /><br>
<textarea name="body" style="width: 420px" placeholder="Ваше сообщение"></textarea><br>
<br>Нажимая на кнопку "Отправить", я даю согласие на обработку своих персональных данных в соответствии с <a href="politika.htm" target="_blank">Политикой конфиденциальности</a><br>
<p style="text-align: center"><input type="submit" value="Отправить" id="btnpng4" /></p>
</form>
<?php
if (isset($_POST["email"]) || isset($_POST["tel"])){
if (isset($_POST["name"])) {$name = $_POST["name"];}
if (isset($_POST["tel"])) {$tel = $_POST["tel"];}
if (isset($_POST["email"])) {$email = $_POST["email"];}
if (isset($_POST["body"])) {$body = $_POST["body"];}
if(empty($email) or empty($name) or empty($body)){
  //отправка сообщения на email
}
else if(empty($tel) or empty($name) or empty($body)){
  //отправка сообщения на tel
}
else{
  //вывод предупреждения, что не заполнены обязательные поля
}

комментарии

Цитата

//отправка сообщения на email

 

Цитата

//отправка сообщения на tel

 

Цитата

//вывод предупреждения, что не заполнены обязательные поля


Заменить на соответствующий код который будет выполнять эти действия

Share this post


Link to post
Share on other sites
10 часов назад, Switch74 сказал:

//отправка сообщения на tel

отправлять на телефон ничего не нужно

10 часов назад, Switch74 сказал:

Заменить на соответствующий код

какой код, например, может быть?

Share this post


Link to post
Share on other sites

Например тот который у вас есть

$ip=$_SERVER["REMOTE_ADDR"]; // Вычисляем ip пользователя
$brose=$_SERVER["HTTP_USER_AGENT"]; // Вычисляем браузер пользователя
$to = "email"; // Ваш email адрес
$subject = "Сообщение c Вашего сайта"; // тема письма
$headers .= "Content-Type: text/html; charset=windows-1251";
$message = "
Пользователь: $name<br>
Телефон: $tel<br>
E-mail: $email<br>
Текст: $body<br><br>

——————————————————--<br>
—————IP отправителя: $ip<br>
—————Браузер отправителя: $brose<br>

";

$send = mail($to, $subject, $message, $headers);

if ($send == "true")

{

echo "Ваше сообщение отправлено. Мы ответим вам в ближайшее время.";

}

else

{

echo "Не удалось отправить сообщение, попробуйте снова!";

}

 

Share this post


Link to post
Share on other sites

Switch74, в форме обратной связи сообщения как отправлялись без заполнения полей email и tel так и отправляются.

Что  можно предпринять, чтобы этого не происходило? 

Share this post


Link to post
Share on other sites

Вот код:

<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Закрыть" class="close">X</a>
<h2>Обратная связь</h2>
<form name="MyForm" action="#openModal" method="post"><br>
<input name="name" style="width: 420px" type="text" placeholder="Ваши фамилия, имя, отчество" /><br>
<input name="tel" style="width: 420px" type="tel" placeholder="Ваш номер телефона" /><br>
<input name="email" style="width: 420px" type="email" placeholder="Ваша электронная почта" /><br>
<textarea name="body" style="width: 420px" placeholder="Ваше сообщение"></textarea><br>
<br>Нажимая на кнопку "Отправить", я даю согласие на обработку своих персональных данных в соответствии с <a href="politika.htm" target="_blank">Политикой конфиденциальности</a><br>
<p style="text-align: center"><input type="submit" value="Отправить" id="btnpng4" /></p>
</form>
<?php
if (isset($_POST["email"]) || isset($_POST["tel"])){
if (isset($_POST["name"])) {$name = $_POST["name"];}
if (isset($_POST["tel"])) {$tel = $_POST["tel"];}
if (isset($_POST["email"])) {$email = $_POST["email"];}
if (isset($_POST["body"])) {$body = $_POST["body"];}
if(empty($email) or empty($name) or empty($body)){
  //отправка сообщения
}
else if(empty($tel) or empty($name) or empty($body)){
  //отправка сообщения
}
else{
  //не заполнены обязательные поля
}
$ip=$_SERVER["REMOTE_ADDR"]; // Вычисляем ip пользователя
$brose=$_SERVER["HTTP_USER_AGENT"]; // Вычисляем браузер пользователя
$to = ""; // Ваш email адрес
$subject = "Сообщение c Вашего сайта"; // тема письма
$headers .= "Content-Type: text/html; charset=windows-1251";
$message = "
Пользователь: $name<br>
Телефон: $tel<br>
E-mail: $email<br>
Текст: $body<br><br>

——————————————————--<br>
—————IP отправителя: $ip<br>
—————Браузер отправителя: $brose<br>
";
$send = mail($to, $subject, $message, $headers);

if ($send == "true")
{
echo "Ваше сообщение отправлено. Мы ответим вам в ближайшее время.";
}
else
{
echo "Не удалось отправить сообщение, попробуйте снова!";
}
}
?>
</div>
</div>

 

Share this post


Link to post
Share on other sites

вот это

$ip=$_SERVER["REMOTE_ADDR"]; // Вычисляем ip пользователя
$brose=$_SERVER["HTTP_USER_AGENT"]; // Вычисляем браузер пользователя
$to = ""; // Ваш email адрес
$subject = "Сообщение c Вашего сайта"; // тема письма
$headers .= "Content-Type: text/html; charset=windows-1251";
$message = "
Пользователь: $name<br>
Телефон: $tel<br>
E-mail: $email<br>
Текст: $body<br><br>

——————————————————--<br>
—————IP отправителя: $ip<br>
—————Браузер отправителя: $brose<br>
";
$send = mail($to, $subject, $message, $headers);

if ($send == "true")
{
echo "Ваше сообщение отправлено. Мы ответим вам в ближайшее время.";
}
else
{
echo "Не удалось отправить сообщение, попробуйте снова!";
}

должно быть вместо

  //отправка сообщения

после

if(empty($email) or empty($name) or empty($body)){


вместо

  //отправка сообщения

после

else if(empty($tel) or empty($name) or empty($body)){

должен быть код который будет выполняться когда указан телефон, но не указан email (его я так понимаю у вас нет)

и вместо

  //не заполнены обязательные поля

после

else{

должен быть вывод информации, что ни одно из обязательных полей не заполнено (этого у вас тоже нет)

Share this post


Link to post
Share on other sites

Теперь так:

<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Закрыть" class="close">X</a>
<h2>Обратная связь<br>с администрацией колледжа</h2>
<form name="MyForm" action="#openModal" method="post"><br>
<input name="name" style="width: 420px" type="text" placeholder="Ваши фамилия, имя, отчество" /><br>
<input name="tel" style="width: 420px" type="tel" placeholder="Ваш номер телефона" /><br>
<input name="email" style="width: 420px" type="email" placeholder="Ваша электронная почта" /><br>
<textarea name="body" style="width: 420px" placeholder="Ваше сообщение"></textarea><br>
<br>Нажимая на кнопку "Отправить", я даю согласие на обработку своих персональных данных в соответствии с <a href="politika.htm" target="_blank">Политикой конфиденциальности</a><br>
<p style="text-align: center"><input type="submit" value="Отправить" id="btnpng4" /></p>
</form>
<?php
if (isset($_POST["email"]) || isset($_POST["tel"])){
if (isset($_POST["name"])) {$name = $_POST["name"];}
if (isset($_POST["tel"])) {$tel = $_POST["tel"];}
if (isset($_POST["email"])) {$email = $_POST["email"];}
if (isset($_POST["body"])) {$body = $_POST["body"];}
if(empty($email) or empty($name) or empty($body)){
$ip=$_SERVER["REMOTE_ADDR"]; // Вычисляем ip пользователя
$brose=$_SERVER["HTTP_USER_AGENT"]; // Вычисляем браузер пользователя
$to = "sos@boki32.ru"; // Ваш email адрес
$subject = "Сообщение c Вашего сайта"; // тема письма
$headers .= "Content-Type: text/html; charset=windows-1251";
$message = "
Пользователь: $name<br>
Телефон: $tel<br>
E-mail: $email<br>
Текст: $body<br><br>

——————————————————--<br>
—————IP отправителя: $ip<br>
—————Браузер отправителя: $brose<br>
";
$send = mail($to, $subject, $message, $headers);

if ($send == "true")
{
echo "Ваше сообщение отправлено. Мы ответим вам в ближайшее время.";
}
else
{
echo "Не удалось отправить сообщение, попробуйте снова!";
}
}
else if(empty($tel) or empty($name) or empty($body)){
  //отправка сообщения
}
else{
  //не заполнены обязательные поля
}
}
?>
</div>
</div>

 

10 часов назад, Switch74 сказал:

должен быть код который будет выполняться когда указан телефон, но не указан email

какой код, например, может быть?

10 часов назад, Switch74 сказал:

должен быть вывод информации, что ни одно из обязательных полей не заполнено

тут какой код нужен?

Share this post


Link to post
Share on other sites
9 часов назад, Switch74 сказал:

а что вы делаете?

Не понял вопроса.

Данная тема посвящена форме обратной связи.

Share this post


Link to post
Share on other sites

если у вас должно выполняться одно и то же действие если есть только email или tel
то

else if(empty($tel) or empty($name) or empty($body)){
  //отправка сообщения
}

и заменяете

if(empty($email) or empty($name) or empty($body)){

на

if((!empty($email) or  !empty($tel)) and !empty($name) and !empty($body)){

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Member Statistics

    46,896
    Total Members
    1,451
    Most Online
    Neovo
    Newest Member
    Neovo
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Спрашивают сейчас

  • Пишут сейчас

    • Добрый вечер! Подскажите.. Не работает форма, заполнил поля php mail, некоторые синтаксисы не знаю. Код ниже. Скрипт пробовал в хеде и в выложенной вариации, не идет сообщение. Заранее спасибо. <!DOCTYPE html> <html> <head> <title>index.html</title> <meta charset="utf-8"/> </head> <body> <form class="form-horizontal" target="_blank" method="post" id="form" enctype="multipart/form-data"> <div class="form-group"> <label class="col-sm-2 control-label">Ф.И.О.:</label> <div class="col-sm-10"> <input class="form-control" type="text" name="name" placeholder="Имя" required /> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label">Телефон:</label> <div class="col-sm-10"> <input class="form-control" type="text" name="number" pattern="^[0-9]{11}$" placeholder="Телефон" required /> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label">Эл. почта:</label> <div class="col-sm-10"> <input class="form-control" type="email" name="email" placeholder="E-mail" required /> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <textarea class="form-control" rows="3" name="message" placeholder="Ваше сообщение" required></textarea> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button class="btn btn-default">Отправить</button> <label class="sucsses">СООБЩЕНИЕ ОТПРАВЛЕНО</label> </div> </div> </form> <script> $("#form").submit(function() { $.ajax({ type: "POST", url: "http://mysite.ru/mail9.php", data: $(this).serialize() }).done(function() { $(this).find("input").val(""); $(".sucsses").fadeIn("1500"); setTimeout(function() { $(".sucsses").fadeOut("1500"); }, 2500); $("#form").trigger("reset"); }); return false; }); </script> </body> </html> <!DOCTYPE html> <html> <head> <title>mail9</title> <meta charset="utf-8"/> </head> <body> <?php $recepient = "mymail@mail.ru"; $name = trim($_POST["name"]); $number = trim($_POST["number"]); $email = trim($_POST["email"]); $message = trim($_POST["message"]); $message = "Имя: $name \nТелефон: $number \nЕmail: $email \nСообщение: $message"; $headers = 'Content-type: text/plain; charset="utf-8"'; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "From: mymail@mail.ru\r\n"; $headers .= "Reply-To: mymail@mail.ru\r\n"; $pagetitle = "Сообщение с АЛЬЯНС-сайта"; mail($recepient, $pagetitle, $message, $headers); ?> </body> </html>  
    • Дорогие Друзья! Рад вам сообщить о выходе новой версии движка Flextype 0.9.9! В Flextype 0.9.9 достаточно много важных изменений определяющих — то как будет выглядеть финальная версия Flextype 1.0.0, к которой я иду уже более двух лет! Были пересмотрены, обновлены и переписаны ключевые моменты ядра, ответственные за работу с Записями, Коллекциями, Кешем и Rest API. Подробнее в статье: https://vk.com/@flextype-flextype-099-reliz Большое спасибо всем за то, что вы являетесь частью сообщества Flextype!
    • Привет! Меня зовут Евгения и я ищу талантливых программистов в компанию DevCube. https://mydevcube.com/ Это международная компания, которая занимается DevOps, web и software разработками. На данный момент в команду требуются Full stack .NET (Junior & Senior) — 3+ year of commercial experience; — Strong knowledge of Angular 5+; — Strong knowledge of Typescript; — Experience with HTML/HTML5, CSS/CSS3, SCSS; — Good understanding of Git; — Conversational English. Будет плюсом: VB experience Условия: Удаленная работа full-time Зарплата от 10-20$/час по результатам собеседования. Обязательное условие - быть на связи до 21-22:00 по Москве. Для отклика прошу писать на почту: evgeniia.ko@mydevcube.com
  • Popular Contributors

    Nobody has received reputation this week.

×
×
  • Create New...