Php форма post перезагрузка

Обновить страницу после отправки формы

У меня небольшая проблема. Я хочу перезагрузить свою страницу после отправки формы.

сразу после ввода запроса перед> example

на вашей полной странице вы можете

Если вы хотите, чтобы форма была отправлена ​​на той же странице, удалите action из атрибутов формы.

Однако, если вы хотите перезагрузить страницу или перенаправить страницу после отправки формы из другого файла, вы вызываете эту функцию в php и она перенаправит страницу за 0 секунд. Кроме того, вы можете использовать header если хотите, просто убедитесь, что у вас нет содержимого перед использованием header

 function page_redirect($location) < echo ''; exit; > // I want the page to go to google. // page_redirect("http://www.google.com") 

атрибут действия в должен быть просто action=»»

Вам нужна форма, которая сама отправляет? Затем вы просто оставите параметр «действие» пустым.

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

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

 //insert this php code, at the end after your closing html tag. window.open('form.php','_self') "; // supposing form.php is where you have created this form > > //if statement close ?> 

Источник

Как автоматически обновить страницу после отправки формы

я использовал » method=»post»> что означает, что он отправляет на той же странице.

4 ответа

Вы можете обновить страницу несколькими способами:

Способ: 3 (не рекомендуется)

onsubmit=»window.location.reload();» кажется, это не работает. Так что я использую функцию тайм-аута в нем. Чтобы это работало.

onsubmit="setTimeout(function() < window.location.reload(); >, 5)" 

Поэтому основная проблема, которую вы описываете, заключается в том, что методом запроса url является POST. Если вы обновите страницу после отправки формы, браузер попытается снова выполнить POST, как если бы вы нажали кнопку отправки.

На самом деле это очень естественный способ отправки данных (на URL, на котором создается форма). Большинство CMS с открытым исходным кодом будут делать то же самое и вести себя одинаково (wordpress, drupal).

Я создал пользовательскую систему, которая выполняла ту же функцию, но у меня были некоторые жалобы на обновление, вызывающее «Вы уверены, что хотите снова отправить эту форму» вместо простой перезагрузки формы. Поэтому я решаю проблему с помощью решения @Bruce s. Внизу моей страницы, прежде чем что-либо выводить, я делаю перенаправление на текущий URL. Это изменяет предыдущую страницу в глазах обозревателя на GET вместо POST и предотвращает предупреждение повторной отправки.

Что касается ваших данных, которые не обновляются, вы, вероятно, создаете форму перед обработкой сообщения. Убедитесь, что обработка сообщения является первой выполняемой вами операцией.

Моя система сильно отличается от этого примера кода, поэтому не ожидайте, что это сработает из коробки. Но это должно дать вам правильную идею.

 else < // Not valid no harm in just reloading as the user will be // fixing their errors and resubmitting anyway. // Generate error messages, etc. >> // Retrieve your form values here after you have fully processed the POST // operation. $values = getDBValues(); function redirect($path) < // The path should be validated somehow as the user // could alter parts of it such as query parameters. // For simplicity I'm leaving that part out. header('Location: ' . $path); die(); >?>  . 

Источник

Обновить страницу после отправки формы

Это поведение по умолчанию, не так ли? Почему вы вложили эту ценность в свои действия? Я думаю, что это неправильно.

моя цель — когда я отправляю после этого что-то, кто обновляет страницу, на которой я сейчас нахожусь

@DárioViegas DárioViegas Если «»» было ошибкой и должно было быть «» , то теперь ваша проблема решена?

8 ответов

сразу после ввода запроса перед> Пример

на вашей полной странице, вы можете иметь это

Если вы хотите, чтобы форма была отправлена ​​на той же странице, удалите action из атрибутов формы.

Однако, если вы хотите перезагрузить страницу или перенаправить страницу после отправки формы из другого файла, вы вызываете эту функцию в php , и она перенаправит страницу за 0 секунд. Кроме того, вы можете использовать header , если хотите, просто убедитесь, что у вас нет содержимого перед использованием header

 function page_redirect($location) < echo ''; exit; > // I want the page to go to google. // page_redirect("http://www.google.com") 

используйте первый в HTML если вы хотите обновить страницу после нажатия кнопки «Отправить». используйте второй, если хотите, после нажатия кнопки «Отправить» вы хотите изменить страницу. это твой выбор.

атрибут действия в должен быть просто action=»»

 //insert this php code, at the end after your closing html tag. window.open('form.php','_self') "; // supposing form.php is where you have created this form > > //if statement close ?> 

Вам нужна форма, которая сама отправляет? Затем вы просто оставите параметр «действие» пустым.

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

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

Источник

Как сделать перезагрузку страницы после отправки формы?

вопрос очень простой , но я пока только начал изучать php
на сайте есть форма action которая ведет на файл php , который отправляет данные на email
как сделать так что-бы сайт не переходил на этот файл php
а перезагружался и форма отправлялась ?
Заранее спасибо

Простой 1 комментарий

Compolomus

в конце кода в файле на который ссылается форма пропишите редирект, я так понимаю там нет вывода, так что заголовок повесить и вернуть на реферер

liqrizz

Пиши php туда же где и форма, action оставь пустым. Или в скрипте пропиши в конце header(«Location: /*ваш урл куда скрипт должен перенаправить*/»)

ThunderCat

1) Если вы уберете «файл php» из экшна, фрома будет субмититься на текущий урл, что как раз будет давать вам перезагрузку. Естественно код отправки данных на емэйл тоже надо будет расположить в текущем скрипте.
2) Отправляйте данные аяксом через яваскрипт, после чего перегружайте страницу из яваскрипта.

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

NoName0

Большое спасибо , я разобрался
Насчет второго — насколько я знаю , при отправке формы с ajax , страница не должна перезагружаться , вроде щас часто делают «отправка формы без перезагрузки» я собственно пытался что то с этим сделать , но так как я еще не углублялся в изучение ajax то у меня не получилось 🙁
ну или я чего то не понимаю

Источник

Отправка формы без перезагрузки страницы на PHP и Ajax

Отправка формы без перезагрузки страницы на PHP и Ajax

Постоянно приходится пользоваться этой заготовкой. Вы можете модернизировать ее под любые нужды, будь то форма обратной связи, форма обратного звонка или заказ какой-либо услуги или товара.

Поэтому я не буду украшать ее стилями, применять классы Bootstrap и различные скрипты, как например маска телефона. Это вы сможете сделать при необходимости в зависимости от задачи.

Используя только одно включение кода из этого примера, можно создать неограниченное количество различных форм на странице. Это будет актуально, например для сайтов лендингов, где на одной странице используется множество различных форм.

HTML-код формы

Для начала создадим саму форму на HTML. Для примера будем использовать только 3 поля: имя, телефон и сообщение.
Один важный момент: у тега обязательно должен быть id. Если на странице будут использоваться несколько форм, то id соответственно должны быть различные.

Зачем это нужно? Именно по этому идентификатору скрипт и будет отличать отправленную форму от других. И при этом не возникнет необходимости делать несколько включений одного и того же JavaScript кода. Но тут опять же все индивидуально и вы можете переделать код как вам удобно.

В форме используем атрибут type в зависимости от типа поля. Это даст дополнительное преимущество при проверке вводимых данных. Чаще всего приходится использовать такие поля как:

Подборка бесплатных IT-курсов и вебинаров от Skillbox.

Бесплатные IT-курсы, нужно только пройти онлайн-тест здесь

Так же на данный момент для полей существуют различные атрибуты, которые избавят от лишних проверок на JavaScript. В этом примере используется атрибут required устанавливающий поле обязательным. А вот например в атрибуте pattern можно указать регулярное выражение для проверки маски ввода. Но я все же для этих целей использую соответствующий плагин jQuery.

Отправка формы без перезагрузки страницы

Тут самое интересное. Но как всегда на самом деле все просто. Приведенный ниже код можно подключить в отдельном .js скрипте или прямо в теле страницы перед закрывающим тегом

И не забудьте перед кодом подключить библиотеку jQuery!

$(document).ready(function () < $("form").submit(function () < // Получение ID формы var formID = $(this).attr('id'); // Добавление решётки к имени ID var formNm = $('#' + formID); $.ajax(< type: "POST", url: '/send.php', data: formNm.serialize(), beforeSend: function () < // Вывод текста в процессе отправки $(formNm).html('

Отправка.

'); >, success: function (data) < // Вывод текста результата отправки $(formNm).html('

'+data+'

'); >, error: function (jqXHR, text, error) < // Вывод текста ошибки отправки $(formNm).html(error); >>); return false; >); >);

Скрипт отслеживает событие submit и получает id той формы, которая была отправлена. Далее по имеющемуся id он обращается к данным этой формы. В данном примере скрипт отслеживает все элементы с тегом .

Хотите купить новый телефон? Здесь вы можете купить айфон краснодар с высоким качеством и по низкой цене.

После получения данных, скрипт передает их PHP обработчику send.php, который находится в корне сайта. Во время отправки данных в теге выводятся сообщения из функций beforeSend — перед отправкой, success — в случае успеха и error в случае ошибки. Сами поля формы и кнопка отправки при этом стираются.

PHP обработчик

 $mailTo = "mail@mail.ru"; // Ваш e-mail $subject = "Письмо с сайта"; // Тема сообщения $headers= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=utf-8\r\n"; $headers . ; if(mail($mailTo, $subject, $message, $headers)) < echo "Спасибо, ".$_POST['name'].", мы свяжемся с вами в самое ближайшее время!"; >else < echo "Сообщение не отправлено!"; >> ?>

В самом начале проверяем, что запрос пришел из Ajax и что поле имя не пусто. Далее получаем данные переданные Ajax имя, телефон и сообщение если есть. Устанавливаем заголовки и отправляем с помощью PHP-функции mail() .

$mailTo — ваш e-mail, куда будут приходить сообщения с сайта
$subject — тема сообщения
$headers . mailto:info@site.ru»> info@site.ru \r\n»; — здесь указываем почту с доменом вашего сайта. Почта не обязательно должна существовать (хотя некоторые почтовые сервисы требуют и этого), но обязательно должна быть на домене сайта, с которого отправляется письмо, иначе оно будет попадать в СПАМ.

Заключение

Как вы могли убедиться использовать технологию AJAX с библиотекой jQuery и отправлять письма без перезагрузки страницы вообще проще простого. Надеюсь этот пример формы на PHP и AJAX или отдельные его части пригодятся вам для разработки различных решений для сайта.

Подборка бесплатных IT-курсов и вебинаров от Skillbox.

Бесплатные IT-курсы, нужно только пройти онлайн-тест здесь

Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:

Источник

Читайте также:  Сократитель ссылок на python
Оцените статью