Отправка формы HTML / PHP (что делать после)

Первый вопрос здесь, так что проявите ко мне терпение.

Я занимаюсь разработкой веб-сайта для своей компании. У меня есть HTML-форма, в которой используется файл php, чтобы отправить мне по электронной почте данные, введенные пользователем. Но пользователь попадает на уродливую страницу .php с простым сообщением «Спасибо».

Мой вопрос состоит из нескольких частей.

  1. Является ли стандартным иметь страницу «Успешная отправка», которая выглядит красиво и модно, или можно просто оставаться на странице, на которой находится форма?
  2. Если все в порядке, как мне выполнить php-код для отправки данных, не покидая страницы?
  3. Кроме того, если я останусь на странице, как мне отобразить поверх нее сообщение вроде «Спасибо, ваша форма была отправлена»?

Стандартно сообщать вашим пользователям, что действие было успешным, иначе как они узнают, что оно было выполнено? Что касается других вопросов, вы можете следовать руководствам, таким как это или чему-либо в Интернете, который появляется, когда вы используете Google: «отправить форму с использованием ajax jquery php без обновления страницы»

hungrykoala 22.05.2018 07:42

1) Вам нужно что-то уведомить пользователя, но это не обязательно должна быть новая страница. 2) Google. Вы можете отправить форму на существующую страницу. 3) Google. Вы должны написать это и отобразить при отправке.

Claire 22.05.2018 07:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
162
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Обычно это зависит от ваших предпочтений.

Что касается меня, я обычно включаю свой сценарий проверки на страницу действия (временно перенаправляет на пустую страницу). Я сохраняю свои переменные сообщения в своем сеансе, чтобы позже можно было перезагрузить форму. Если возникает ошибка, я сохраняю сообщение об ошибке в переменной сеанса, а затем перенаправляю на свою страницу формы. В своей форме я включаю в каждый элемент ввода этот фрагмент

value=<?php if isset($_SESSION['var_name']){echo $_SESSION['var_name'];}?>

Однако, если данные действительны, я выполню определенные действия (вставки в базу данных, рассылку по почте и т. д.) Перед перенаправлением на мою целевую страницу (обычно домашнюю страницу).

Как правильно ответить на 3 ваших вопроса:

  1. Как я уже сказал, это предпочтительно. Он может варьироваться от простого всплывающего окна до перенаправления до полноценной страницы. Тем не менее, стандартным является информирование пользователя о статусе отправки. Он не будет гадать на вашей странице.

  2. Если вы хотите остаться на странице формы, попробуйте отправить форму через AJAX в сценарий проверки. Красиво и просто

  3. Обратитесь к # 2. Вы выполняете свой код во фрагменте AJAX

  1. Является ли стандартным иметь страницу «Успешная отправка», которая выглядит красиво и модно, или можно просто оставаться на странице, на которой находится форма?

Ответ: Хорошо, если вы покажете Спасибо !!! сообщение на той же странице, если на странице также есть другой контент.

  1. Если все в порядке, как мне выполнить php-код для отправки данных, не покидая страницы?

Ответ: Вы можете использовать AJAX для отправки асинхронного запроса на сервер с данными, заполненными в форме.

3. Далее, если я остаюсь на странице, как мне отобразить поверх нее сообщение вроде «Спасибо, ваша форма была отправлена»?

Ответ: Получив успешный ответ от AJAX, вы можете изменить HTML-код с помощью сообщения «Спасибо», а если вы получите некоторую ошибку при отправке формы, вы можете показать эту ошибку на той же странице, не обновляя страницу.

Ответ принят как подходящий

Учитывая вопрос 1 Является ли стандартным иметь страницу «Успешная отправка», которая выглядит красиво и модно, или можно просто оставаться на странице, на которой находится форма?

Не обязательно иметь отдельную страницу для отображения ответа конечному пользователю. На самом деле это зависит от сценария, для которого вы разрабатываете страницу. Основная цель - предоставить конечным пользователям / посетителям вашего сайта лучший пользовательский интерфейс. Если есть важная информация с большим содержанием, то после отправки формы лучше показать ее на другой странице. Если это просто сообщение об успехе, то после отправки формы можно остаться на той же странице и показать там ответное сообщение.

Теперь перейдем к вопросам 2 и 3.

Если все в порядке, как мне выполнить php-код для отправки данных, не покидая страницы?

Кроме того, если я останусь на странице, как мне отобразить поверх нее сообщение вроде «Спасибо, ваша форма была отправлена»?

Вы можете сделать это с помощью ajax. С помощью jquery вы можете сделать это намного проще, используя

Функция $ .ajax

Бывший :

$("#formbutton").click(function(){
        $.ajax({
           type: "POST", // method
           url: "savecontact.php", // call to external php file
           data: {name:n,contact:c}, // passing variables to php file

           success: function(result) {

              // get the response after ajax call is successful 
           },
           complete: function(result){

           }
      });
     });

Теперь в savecontact.php вы пишете необходимый код (обычный php-код для вставки в таблицу) для сохранения данных и возврата ответа.

Бывший:

result = mysqli_query("INSERT INTO table (NAME ) VALUES ('val')"));
    if ($result)
    {
        echo "Success";
        exit;
    }
    else
    {
        echo "Error";
        exit;
    }

После выполнения вызова ajax внутри функции успеха вызова ajax вы получите ответ Success или Error, и на основе этого вы можете отобразить сообщение в пустом div, который обычно помещается над формой.

success: function (response) {

       if (response == "Success"){
           $("#div").html("Thanks, your form was submitted");          
       }
       else{
            $("#div").html("Issue with form submission.Please try again");
       }
}

Соответствующее сообщение будет отображаться после отправки формы в виде ответа ajax.

  1. Да, вы можете использовать ту же страницу, на которой собираетесь отправить форму.
  2. Вы можете установить действие для другой страницы .php, например sendEmail.php

    action = "sendEmail.php" method = "post"

    и вы можете получить там значение отправки формы. когда электронное письмо отправлено, вы можете поставить такое условие

    if (emailSent == true) { заголовок ('Расположение: http://www.example.com/index.php?success=true'); }

  3. при перенаправлении sendEmail.php на страницу индекса вы можете получить значение URL-адреса с помощью php. И отобразить сообщение об успехе

    $ paraVal = $ _GET ["успех"]; if ($ paraVal == true) { // выводим сообщение }

Привет! Для меня это имеет наибольший смысл. Единственная проблема в том, что я получаю это сообщение об ошибке. «Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (...)». Я пробовал поискать в Google, но он сказал, что я не могу выполнить какой-либо код перед редактированием заголовка. Я неправильно понял ваши инструкции?

Caleb Robinson 22.05.2018 17:31

Привет спасибо. Добавьте это перед началом заголовка. ob_start (); и ob_end_clean (); вы можете получить более подробную информацию по этой ссылке: benohead.com/php-modify-header-information-headers-already-s‌ ent

Mahesh Sanjeewa 23.05.2018 05:52

Другие вопросы по теме