Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не работает обратная связь в Php

Кирилл Дятлов Ученик (225), на голосовании 2 года назад
Я решил сделать для сайта форму обратной связи, но она не работает
Пишу на php относительно недавно, помогите пожалуйста (проект на хостинг загружен)

Вёрстка формы:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Обратная связь</title>
</head>

<body>
<?php
require "header.php";
?>

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

<form action="feedback_manager.php" method="post">
<center><input type="text" name="feedback" placeholder="Ваша электронная почта"></center>
<center><input type="text" name="problem" placeholder="Ваша проблема"></center>
<center><input name="descr" placeholder="Подробное описание"></center>
<center><input type="submit"></center>
</form>

</form>
</body>
</html>

Код обработки и отправки почты:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>

<body>
<?php
$user = htmlspecialchars(trim($_POST['feedback']));
$theme = htmlspecialchars(trim($_POST['descr']));
$msg = htmlspecialchars(trim($_POST['problem']));

if($user == null) {
echo '<center>'."Вы не ввели вашу электронную почту!".'</center>'.;
}

if($msg == null) {
echo '<center>'."Вы не описали саму проблему".'</center>'.;
}

if($theme == null) {
echo '<center>'."Вы не ввели тему вашей проблемы".'</center>'.;
}

else {
echo '<center>'.'Ваше сообщение отправлено! Ожидайте ответа на почту'.'</center>';
$theme = "=?utf-8?B?".base64_encode($theme)."?=";
$headers = "From: $user\r\nReply-to: $user\r\nContent-type: text/plain; charset=utf-8\r\n";
mail(" kirilldyatlov2007@mail.ru ", $theme, $msg, $headers);
}
?>

</form>
</body>
</html>
Голосование за лучший ответ
Сергей Просветленный (44664) 2 года назад
Скачай готовую рабочую форму и не майся
Параноидальное Безумие Гуру (3038) 2 года назад
потому-что у тебе вероятно не настроен SMTP mail на хостинге
Параноидальное БезумиеГуру (3038) 2 года назад
 if($user == null)  $errors[] = 'Вы не ввели вашу электронную почту!'; 
if($msg == null) $errors[] = 'Вы не описали саму проблему!';
if($theme == null) $errors[] = 'Вы не ввели тему вашей проблемы!';
if (empty($errors))
{
echo '
Ваше сообщение отправлено! Ожидайте ответа на почту
';
$theme = "=?utf-8?B?".base64_encode($theme)."?=";
$headers = "From: $user\r\nReply-to: $user\r\nContent-type: text/plain; charset=utf-8\r\n";
mail(" kirilldyatlov2007@mail.ru ", $theme, $msg, $headers);
}
else {
foreach ($errors as $code) { echo '
' .$code. '
'; }
}
?>
Новый Человек Просветленный (34527) 2 года назад
Возможно ошибка синтаксическая. Там в конце строк, где идёт '</center>' стоит точка конкатенации в конце. Вроде, так не должно быть.
dim565 Искусственный Интеллект (424764) 2 года назад
1) Проверьте, что возвращает функция mail(), если false возможно на хостинге отключена её поддержка (или заблокирована для вас).

2) $headers = "From: $user — у вас в переменной $user почта получателя. Зачем вы указываете такую же отправителем? Доверия к такому письму нет, скорее всего mail вообще его не пропустит. Пишите доменную почту, например info@вашсайт.ру (создавать не обязательно). Если не поможет попробуйте для теста отправлять письмо не на mail.ru , а например на яндекс
Похожие вопросы