Jump to content
  • 0

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


Totalist
 Share

Question

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

В форме обратной связи нужно реализовать проверку на заполнение полей "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>

 

Link to comment
Share on other sites

22 answers to this question

Recommended Posts

  • 0

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

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

 

Link to comment
Share on other sites

  • 0

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

  Цитата

Parse error: syntax error, unexpected

Expand  
<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>

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

Link to comment
Share on other sites

  • 0
  On 1/23/2020 at 8:43 AM, Switch74 said:

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

Expand  

какой код?

  On 1/23/2020 at 8:43 AM, Switch74 said:

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

Expand  

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

Link to comment
Share on other sites

  • 0
<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

Expand  

 

  Цитата

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

Expand  

 

  Цитата

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

Expand  


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

Link to comment
Share on other sites

  • 0
  On 1/24/2020 at 8:23 AM, Switch74 said:

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

Expand  

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

  On 1/24/2020 at 8:23 AM, Switch74 said:

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

Expand  

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

Link to comment
Share on other sites

  • 0

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

$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 "Не удалось отправить сообщение, попробуйте снова!";

}

 

Link to comment
Share on other sites

  • 0

Вот код:

<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>

 

Link to comment
Share on other sites

  • 0

вот это

$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{

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

Link to comment
Share on other sites

  • 0

Теперь так:

<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>

 

  On 2/11/2020 at 8:16 AM, Switch74 said:

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

Expand  

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

  On 2/11/2020 at 8:16 AM, Switch74 said:

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

Expand  

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

Link to comment
Share on other sites

  • 0

если у вас должно выполняться одно и то же действие если есть только 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)){

 

Link to comment
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
Answer this question...

×   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.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy