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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Member Statistics

    46,695
    Total Members
    3,128
    Most Online
    Dmitry3258
    Newest Member
    Dmitry3258
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.