как сделать редирект после отправки формы

Website-create.ru

Обычно при отправке какой-либо формы пользователь переходит на страницу файла-обработчика данной формы. А что делать, если мы хотим оставить пользователя на той же странице, однако, чтобы файл-обработчик все же отработал как нужно… Сегодня рассмотрим один из способов, как оставить пользователя на той же странице после отправки формы.

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

Сегодня рассмотрим один достаточно простой способ реализации такой задачи.

Редирект после отправки формы

1. Для начала давайте создадим html-файл с очень простой формой, где пользователю будет предложено ввести только свое имя и фамилию.

Как видите, кроме формы здесь больше ничего нет.

Файлом-обработчиком формы будет файл «redirect.php», который мы создадим в следующем шаге и сохраним в том же каталоге, что и текущий файл для того, чтобы путь был корректен.

Также у каждого поля нашей формы есть параметр «name», при помощи которого мы будем передавать то, что заполнил пользователь в файл-обработчик.

Думаю, здесь все ясно.

2. Теперь, собственно нужно создать наш файл-обработчик «redirect.php».

Что он может делать?

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

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

Если Вы сейчас попытаетесь отправить форму, то сообщение будет отправлено, но после отправки Вы окажетесь на странице «redirect.php», на которой не увидите ничего, кроме пустоты.

Давайте наконец то реализуем то, чтобы мы оставались на странице с формой.

Для этого после функции mail() и перед закрывающим тегом php блока нужно добавить следующий код:

Если Вы попытаетесь отправить форму теперь, то сообщение также придёт на нужный адрес, но Вы останетесь на нашей первой странице с формой.

Что же делает данный код?

Глобальная переменная $_SERVER[‘HTTP_REFERER’] является Переменной окружения. Она хранит URL-адрес, с которого пользователь попал на данную страницу.

Мы проверяем, существует ли такая переменная. Если она существует (то есть в ней хранится значение), то в переменную «$redirect» мы заносим это значение (то есть адрес нашей страницы с html-формой). А если не существует (это в том случае, если пользователь просто вручную вбил в адресную строку имя нашего файла-обработчика), то мы присваиваем значение адреса нашего html-файла с формой.

Здесь я использую тернарный оператор для описания этого условия, но Вы также можете использовать конструкцию if-else, если она для Вас более удобна и привычна.

Результат занесен в переменную «$redirect». После этого всего мы просто вызываем функцию header(), в которую и передаем нашу переменную.

ВАЖНО!

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

Ну вот в общем то и все! Теперь достаточно простой метод в Вашем распоряжении.

Все исходные файлы Вы можете найти в «Исходниках» к уроку.

Не забывайте поделиться уроком с Вашими друзьями при помощи кнопок соц. сетей, которые Вы можете найти ниже.

А также оставляйте комментарии и подписывайтесь на обновления блога. Будем и дальше продолжать изучать тонкости верстки, программирования, дизайна и еще много всего интересного.

Источник

Редирект после POST запроса

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

Но речь не о деньгах, а о правильном редиректе…

Практически все веб-приложения при редиректе POST запроса возвращают статус 302 Found. Например, в php редирект делают так: header(‘Location: /new/location’);. Без дополнительных параметров или если отдельно не указан другой статус, функция вернёт именно 302 Found.

Теперь обратимся в официальным документам. В RFC 2616 сказано следующее:
If the 302 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

Если статус 302 получен в ответ на запрос отличный от GET или HEAD, юзер-агент НЕ ДОЛЖЕН автоматически редиректить запрос до тех пор, пока он не будет подтверждён пользователем, так как это может нарушить условия запроса.

Там же в заметках написано, что несмотря на это, многие юзер-агенты пренебрегают этим правилом и интерпретируют 302 статус как 303. А пошло это ещё со времён HTTP/1.0, в котором 303 статуса ещё не было.

Т.е. для редиректа POST запроса нужно использовать статус 303 See Other, который специально для этого и предназначен. В php редирект будет выглядеть, например, так: header(‘Location: /new/location’, true, 303);

В RFC в заметке к статусу 303 написано:
Many pre-HTTP/1.1 user agents do not understand the 303 status. When interoperability with such clients is a concern, the 302 status code may be used instead, since most user agents react to a 302 response as described here for 303

Многие пре-HTTP/1.1 юзер-агенты не понимают 303 статус. Если совместимость с такими клиентами важна, то вместо него можно использовать 302 статус, так как большинство таких агентов реагируют на 302 статус также как на 303.

И получается два варианта:
1. По прежнему использовать 302;
a. есть вероятность нарваться на юзер-агента, который чтит спецификацию и выдаст предупрежление.
б. так как такое поведение не стандартно, можно нарваться на вообще непредсказуемый результат.

2. Использовать 303, тогда старые клиенты не поймут, что от них хотят.

Во втором случае, можно анализировать версию протокола, запрошенную клиентом, и выдавать 302 для старых клиентов. В теле ответа писать ссылку на новый УРЛ. Тогда пользователь старого агента, сможет хотя бы кликнуть на ссылку.

Источник

Перенаправление после оправки сообщения Contact form7

как сделать редирект после отправки формы. Смотреть фото как сделать редирект после отправки формы. Смотреть картинку как сделать редирект после отправки формы. Картинка про как сделать редирект после отправки формы. Фото как сделать редирект после отправки формы

Приветствую вас дорогие читатели моего блока! Мне не раз поступали вопросы о возможности перенаправления после отправки сообщения на страницу благодарности, поэтому сегодня я расскажу именно об этом.

Навигация по статье:

На сегодняшний день Contact Form7 является одним из наиболее популярных, удобных и многофункциональных плагинов для создания формы обратной связи у вас на сайте. С его помощью можно делать как стандартные формы обратной связи так и формы заказа звонка, оформления заказа, сбор подписной базы и так далее.

Для чего нужно перенаправлять пользователя на страницу благодарности?

В основном такие страницы используют на посадочных страницах Landing Page. Бытует мнение что наличие таких страниц позволяет увеличить конверсию. Возможно это так, но при условии что ваша страница правильно оформлена.

Можно выделить несколько элементов, которые желательно реализовать на странице благодарности:

Можно разместить там следующий контент:

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

Как сделать перенаправление после отправки сообщения в Contact Form 7.

Данный плагин содержит в себе достаточно большое количество настроек.
Более подробно о них я рассказывала в статье «Настройка Contact Form 7».
Сегодня же я остановлюсь только на возможности перенаправления.
Для того чтобы реализовать данную задачу в новых версиях плагина нам нужно:

Источник

Как перенаправить пользователя на другую страницу после отправки формы в Contact Form 7

Хотите перенаправить пользователя на другую страницу после успешной отправки формы в Contact Form 7? Сегодня мы сделаем это! 💯

С помощью плагина Contact Form 7 Redirection

Устанавливаем и активируем плагин Contact Form 7 Redirection, переходим на страницу редактирования существующей формы или создания новой и выбираем вкладку «Настройки перенаправления».

Здесь вы можете либо выбрать одну из существующих страниц сайта,

как сделать редирект после отправки формы. Смотреть фото как сделать редирект после отправки формы. Смотреть картинку как сделать редирект после отправки формы. Картинка про как сделать редирект после отправки формы. Фото как сделать редирект после отправки формы

либо указать произвольный адрес, в том числе внешний, например, http://yandex.ru. В этом случае отметьте галочку «Использовать внешний URL».

как сделать редирект после отправки формы. Смотреть фото как сделать редирект после отправки формы. Смотреть картинку как сделать редирект после отправки формы. Картинка про как сделать редирект после отправки формы. Фото как сделать редирект после отправки формы

После настройки перенаправления не забудьте сохранить изменения, нажав кнопку «Сохранить».

Если отметить галочку «Передать поля из формы в качестве параметров URL-адреса» (1), все значения полей отправленной формы будут переданы на страницу переадресации в виде GET-параметров. Пример: http : //test.wpcute.ru/test-page/?your-name=Денис&your-email=order%40wpcute.ru&your-subject=Заказ+доработки&your-message=Мне+нужна+доработка+сайта+wpcute.ru

А если включить опцию «Открывать страницу в новой вкладке» (2) — страница переадресации будет открыта в новой вкладке браузера.

как сделать редирект после отправки формы. Смотреть фото как сделать редирект после отправки формы. Смотреть картинку как сделать редирект после отправки формы. Картинка про как сделать редирект после отправки формы. Фото как сделать редирект после отправки формы

С помощью сниппета

Альтернативный вариант — использовать следующий сниппет.

Источник

PHP Переадресация на другую страницу после отправки формы

Я прочитал все ваши сообщения о вставке заголовков в файл формы php, чтобы перенаправить пользователя на другой URL ПОСЛЕ отправки формы, но я не могу понять, как это сделать. Ниже мой код. Можете ли вы показать мне, куда поместить заголовок / перенаправление, чтобы информация отправлялась по электронной почте, а затем пользователь перешел на другую страницу html?

Обратите внимание, что вы никогда не увидите «Спасибо, что подписались на наш список рассылки»

Это должно быть на следующей странице, если вы повторите любой текст, вы получите сообщение об ошибке, потому что заголовки были бы уже созданы, если вы хотите перенаправить, никогда не возвращайте текст, даже пространство!

Если ваше перенаправление находится в PHP, перед командой перенаправления ничего не следует повторять.

См. Заголовок для получения дополнительной информации.

Помните, что header () должен быть вызван до отправки любого фактического вывода либо с помощью обычных тегов HTML, пустых строк в файле, либо из PHP

В противном случае вы можете использовать Javascript для перенаправления пользователя.

а затем поместите это в свой php-файл

Не забудьте изменить URL-адрес на свой.

Вы можете включать функцию заголовка везде, где захотите, до тех пор, пока NO html и / или текст не будут напечатаны до стандартного.

Для получения дополнительной информации и использования: http://php.net/manual/en/function.header.php

Я вижу в вашем коде, что вы echo() вычеркиваете какой-либо текст в случае ошибки или успеха. Не делайте этого: вы не можете. Вы можете перенаправлять или показывать текст. Если вы покажете текст, вы не сможете перенаправить его.

Всякий раз, когда вы хотите перенаправить, отправьте заголовки:

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *