Помогите пожалуйста с формой обратной связи. Полностью устраивает форма обратной связи вот её код, но при отправке письма письмо не отправляется Отправляю, но пишет в новом окне Ой, что-то пошло не так" соответственно письмо не приходит. В чём может быть проблема? и ещё вопрос как сделать чтобы писалось не в новом окне а на этой же страничке где кнопка отправить. Помогите пожалуйста буду очень признателен. Контактная форма лежит на серваке путь её я указываю верно. form.php PHP: <meta http-equiv='refresh' content='1; url=тут вставляю адрес сайта'> <meta charset="UTF-8" /> <?php if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}} if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}} if (isset($_POST['temma'])) {$temma = $_POST['temma']; if ($temma == '') {unset($temma);}} if (isset($_POST['massage'])) {$massage = $_POST['massage']; if ($massage == '') {unset($massage);}} if (isset($name) && isset($email) && isset($temma) && isset($massage)){ $address = "тут почта"; $mes = "Имя: $name \nE-mail: $email \nТема: $temma \nТекст: $massage"; $send = mail ($address,$temma,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email"); if ($send == 'true') {echo "Сообщение отправлено";} else {echo "Ой, что-то пошло не так";} } else { echo "Заполните все поля"; } ?> Контактная форма лежит на серваке путь её я указываю верно. form.php затем я вставляю в html страницу html код HTML: <form action="/тут добавляю контактную форму"> Имя<input class="inp" style="width: 30%;" name="name" type="text" /> E-mail:<input class="inp" style="width: 30%;" name="email" type="text" /> Тема сообщения<input class="inp" style="width: 30%;" name="temma" type="text" /> Ваш текст: <textarea class="inp" style="width: 80%;" cols="1" name="massage" rows="5"></textarea> <input class="inp" type="submit" value="Отправить" /> </form>
лучше перейти на PHPMailer, там хоть есть отладка, будет проще понять, что случилось Можно отправить без перезагрузки страницы используя AJAX, на javascript есть хорошая библиотека jquery, с помощью неё можно и ajax запрос отправить Без перезагрузки страницы: PHP: <?php header('Content-Type: text/html; charset=utf-8'); if($_SERVER['REQUEST_METHOD'] == 'POST') { $required_fields = [ 'name' => 'Имя', 'email' => 'Электро почта', 'password' =>'Пароль', ]; $errors = array_diff_key($required_fields, array_filter($_POST, function($var) { return !empty($var); })); if (is_array($errors) && count($errors)>0) { echo 'Заполните поле:<br>'; foreach ($errors as $key => $value) { echo $value.'<br>'; } } else { // тут делаем отправку почты echo '<h1>Письмо улетело!</h1>'; } exit; } ?> <!DOCTYPE html> <html> <head> <title>FeedBack</title> </head> <body> <div id="result"></div> <form id="mail" action="<?=$_SERVER['PHP_SELF']?>" method="POST"> Name: <input type="name" name="name"><br> Email: <input type="name" name="email"><br> Password: <input type="password" name="password"><br> <input type="submit" value="Отправить голубем"> </form> <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script type="text/javascript"> $(function() { $( '#mail' ).on( 'submit', function() { event.preventDefault(); var formData = new FormData($('#mail')[0]); var jqxhr = $.ajax({ url: '<?=$_SERVER['PHP_SELF']?>', data: formData, type: 'POST', contentType: false, processData: false, }) .done(function(result) { $('#result').html(result); }) .fail(function() { $('#result').html('<h1>Ошибка, голуби спят.</h1>'); }); }); }); </script> </body> </html>
Ты это, походу, по Попову пишешь. Твой скрипт устроен так, что если хоть одно из полей формы не заполнено - будет ошибка. Ты при тестировании точно все поля заполняешь? Выведи через echo содержимое всех переменных НЕПОСРЕДСТВЕННО ПЕРЕД отправкой формы. И еще: вот пример с PHP.net: PHP: $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); . Обрати внимание на комбинации одинарных и двойных кавычек.