V
V
Vaha Vaynahskiy2018-03-18 16:13:52
PHP
Vaha Vaynahskiy, 2018-03-18 16:13:52

What could be wrong with the form?

created a feedback form with a record of the entered data in a txt file

<!DOCTYPE HTML>
<html>
<head>
    <title>Форма</title>
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"  type="text/javascript"></script>
    <script>
        $(document).ready(function(){
            $('#btn_submit').click(function(){
                // собираем данные с формы
                var user_name    = $('#user_name').val();
                var user_email   = $('#user_email').val();
                var text_comment = $('#text_comment').val();
                // отправляем данные
                $.ajax({
                    url: "action.php", // куда отправляем
                    type: "post", // метод передачи
                    dataType: "json", // тип передачи данных
                    data: { // что отправляем
                        "user_name":    user_name,
                        "user_email":   user_email,
                        "text_comment": text_comment
                    },
                    // после получения ответа сервера
                    success: function(data){
                        $('.messages').html(data.result); // выводим ответ сервера
                    }
                });
            });
        });
    </script>
</head>
<body>
    <br/>
    <div class="messages"></div>
    <br/>
    <label>Ваше имя:</label><br/>
    <input type="text" id="user_name" value="" /><br/>
     
    <label>Ваш e-mail:</label><br/>
    <input type="text" id="user_email" value="" /><br/>
     
    <label>Текст сообщения:</label><br/>
    <textarea id="text_comment"></textarea>
     
    <br/>
    <input type="button" value="Отправить" id="btn_submit" />     
</body>
</html>

<?php
    $msg_box = ""; // в этой переменной будем хранить сообщения формы
    $errors = array(); // контейнер для ошибок
    // проверяем корректность полей
    if($_POST['user_name'] == "")    $errors[] = "Поле 'Ваше имя' не заполнено!";
    if($_POST['user_email'] == "")   $errors[] = "Поле 'Ваш e-mail' не заполнено!";
    if($_POST['text_comment'] == "") $errors[] = "Поле 'Текст сообщения' не заполнено!";
 
    // если форма без ошибок
    if(empty($errors)){     
        // собираем данные из формы
        $message  = "Имя пользователя: " . $_POST['user_name'] . "<br/>";
        $message .= "E-mail пользователя: " . $_POST['user_email'] . "<br/>";
        $message .= "Текст письма: " . $_POST['text_comment'];      
        send_mail($message); // отправим письмо
        // выведем сообщение об успехе
        $msg_box = "<span style='color: green;'>Сообщение успешно отправлено!</span>";
    }else{
        // если были ошибки, то выводим их
        $msg_box = "";
        foreach($errors as $one_error){
            $msg_box .= "<span style='color: red;'>$one_error</span><br/>";
        }
    }
 
    // делаем ответ на клиентскую часть в формате JSON
    echo json_encode(array(
        'result' => $msg_box
    ));
     
     
    // функция отправки письма
    function send_mail($message){
        // почта, на которую придет письмо
    	$file=fopen('mes.txt','a+'); 
    	fputs($file,$_POST['user_name']); 
    	fputs($file,$_POST['user_email']); 
    	fputs($file,$_POST['text_comment']); 
    	fclose($file); 
         
        // отправляем письмо 
        mail($message);
    }
     
?>

The data is being written, but for some reason there is no text "Message sent" and there is no line wrapping in the file either

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
maddog670, 2018-03-18
@vainax

You most likely have an error sending your message. Writing to file occurs, but the message is not sent

<?php
ini_set('display_errors', true);
ini_set('html_errors', false);

error_reporting(E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE);
ini_set('error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE);

    $msg_box = ""; // в этой переменной будем хранить сообщения формы
    $errors = array(); // контейнер для ошибок
    // проверяем корректность полей
    if($_POST['user_name'] == "")    $errors[] = "Поле 'Ваше имя' не заполнено!";
    if($_POST['user_email'] == "")   $errors[] = "Поле 'Ваш e-mail' не заполнено!";
    if($_POST['text_comment'] == "") $errors[] = "Поле 'Текст сообщения' не заполнено!";
 
    // если форма без ошибок
    if(empty($errors)){     
        // собираем данные из формы
        $message  = "Имя пользователя: " . $_POST['user_name'] . "<br/>";
        $message .= "E-mail пользователя: " . $_POST['user_email'] . "<br/>";
        $message .= "Текст письма: " . $_POST['text_comment'];      
        if(send_mail($message)){
        	// выведем сообщение об успехе
        	$msg_box = "<span style='color: green;'>Сообщение успешно отправлено!</span>";
        }else{
        	$msg_box = "<span style='color: red;'>Сообщение не отправлено!</span>";
        }
    }else{
        // если были ошибки, то выводим их
        $msg_box = "";
        foreach($errors as $one_error){
            $msg_box .= "<span style='color: red;'>$one_error</span><br/>";
        }
    }
 
    // делаем ответ на клиентскую часть в формате JSON
    echo json_encode(array(
        'result' => $msg_box
    ));
     
     
    // функция отправки письма
    function send_mail($message){
        // почта, на которую придет письмо
        if(file_put_contents('mes.txt', $_POST['user_name']."\n".$_POST['user_email']."\n".$_POST['text_comment'], FILE_APPEND | LOCK_EX)){
        	return true;
        }
        else{
        	return false;
        }
    }
     
?>

R
Roman Sokolov, 2018-03-18
@jimquery

Perhaps success is not performed.
Look at the web server logs for errors from the php script.
From the browser side, errors in the JS console. You can output debug messages via console.log() and see what parts are executed and what is returned.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question