@PanQy

Не работает feedback форма РНР?

Суть в том, что форма некоректно работает, что уже не пробовал...
не хочет
Все заканчивается сообщением
echo "Ошибка. Сообщение не отправлено!";


Помогите пожалуйста решить проблему

Код html
<form method="post" action="mail.php">
<strong>Ваше имя:</strong><br />
<input type="text" name="name" size="30"/>
<br />
<strong>Ваш e-mail (для ответа):</strong><br />
<input name="email" type="text" size="30" />
<br />
<strong>Ваш телефон:</strong><br />
<input name="phone" type="text" size="30" />
<br />
<strong>Ваше сообщение:</strong><br />
<textarea name="mess" rows="8" cols="70"></textarea>
<p>
<input type="submit" value="Отправить сообщение"/>
</p>
</form>


Код PHP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Обратная связь</title>
</head>
<body>
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}

$to = "МОЯ ПОЧТА"; /*Укажите ваш адрес электоронной почты*/
$headers = "Content-type: text/plain; charset = utf-8";
$subject = "Сообщение с вашего сайта";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nТелефон: $phone \nСообщение: $mess";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<b>Спасибо за отправку вашего сообщения!<p>";
echo "<a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу";
}
else 
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
?>
</body>
</html>
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 2
Daemon23RUS
@Daemon23RUS
$headers = 'From: webmaster@example.com' . "\r\n" .

1)Если From: не указан в php.ini его надо указать явно.
2) Каждая строка должна быть отделена символом CRLF (\r\n). Строки не должны быть длиннее 70 символов.
обратите внимание на CRLF (\r\n) или (\n)
А вообще проверьте работает ли у Вас функция mail на хостинге, кодом из документации адаптировав под себя
Sapmle
<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>

А уже потом душите свой скрипт на работоспособность.
P.S. Блин позже досмотрел у вас в условии if ($send == 'true') замените на if ($send == true)
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
0) Смотрите логи. Или включите вывод ошибок и варнингов директивой
ini_set('error_reporting',E_ALL);
ini_set('display_errors', 1);

1) За использование mail в 21 веке в нормальном обществе с человеком перестают общаться, возможно бьют. Используйте современные мэйл библиотеки, PHPMailer, SwiftMailer, у них внятная документация, удобный и простой функционал, а главное - хороший дебаг и простая отладка.
2) $send = mail (...) вам НИЧЕГО не скажет об отправке письма, и вернет тру в случае удачной передачи его в пул отправки (что вообще не гарантирует его дальнейшую отправку)
3) if ($send == 'true') естественно будет всегда возвращать бред, так как вы сравниваете булево значение со строкой. Правда, конкретно в этом коде, у вас, по стечению обстоятельств, будет даже работать правильно...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 16:35
5000 руб./за проект
30 апр. 2024, в 16:03
2500 руб./за проект