Jump to content
  • 0

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


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 post
Share on other sites

22 answers to this question

Recommended Posts

  • 0
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"];}
...

 

Link to post
Share on other sites
  • 0
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"];}
Link to post
Share on other sites
  • 0

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

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

 

Link to post
Share on other sites
  • 0

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>

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

Link to post
Share on other sites
  • 0

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

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

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

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

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

какой код?

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

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

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

Link to post
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

 

Цитата

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

 

Цитата

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


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

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

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

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

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

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

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

Link to post
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 post
Share on other sites
  • 0

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

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

Link to post
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 post
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 post
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>

 

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

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

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

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

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

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

Link to post
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 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
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.

  • Комментарии

    • alert('2' + submit.value) нужно было делать внутри request.onreadystatechange, потому что именно там приходит значение с сервера и задаётся value у submit. И через сколько времени это произойдёт, не всегда известно, может и через минуту, если интернет медленный, поэтому таймаутами универсально не побороть.
    • Я не уверен, что у формы есть событие input, но если даже было бы, то переменные result, num1 и num2 не определены. Они были бы созданы автоматически, если бы это были id, но у тебя-то name. И я не в курсе, сейчас можно писать js-код в атрибутах без javascript: спереди? И есть ли у тега <output> свойство value? Может быть, у него textContent? Подключи Vue, там будет работать так, как ты хочешь, только придётся несколько дополнительных действий сделать, привязывая переменные к инпутам и создавая computed-свойство.
    • В телеграме картинка есть, вконтакт тоже показывает, даже в аське есть. Видимо, ты как-то не так проверяешь.
    • Понял, спасибо большое. Я просто думал, что если выбран класс, то и применяяется только к конкретному классу, а оказывается не правильно думал. Еще раз спасибо
    • Добрый день! Есть такая страница http://tehne.com/grant/right-bank-of-kazanka-river-competition-2021-ru Хочу сделать чтобы в мессенджерах когда отправляют ссылку вместе с заголовком показывалась определенная картинка. Я добавил эту картинку в мета тэги og и link rel="image_src"  и она все равно не появляется когда делюсь в мессенджерах Почему так?  
×
×
  • 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.