Я работаю над простым сайтом PHP, который требует, чтобы у меня была возможность перенаправить запрос пользователя на другую страницу (обратите внимание, что я сказал вперед, и не переадресовывать). Я знаю, как перенаправить, манипулируя header
переменная, но я не хочу этого делать, как описано ниже.
Я пытаюсь написать очень простое приложение со списком рассылки на основе MVC на PHP, опираясь на мои знания об этом в JSP. В JSP мне очень понравилось то, что вы могли вперед или же переадресовывать запрос. Для моих целей мне нужно вперед как я хочу сохранить параметры запроса (тогда как переадресовывать уронит их).
Вот описание того, чего я хочу достичь:
Единственный способ передать сообщение с запросом для отображения — добавить его к объекту запроса, а затем получить к нему доступ с перенаправленной страницы. Тем не менее, единственный способ перехода на другую страницу — это использование header
метод, который отбрасывает объект запроса (из того, что я могу сказать). Я хочу найти способ вперед запрос (объект) на новую страницу, так что я могу получить доступ к переменным запроса с новой страницы.
Есть ли вообще что-нибудь сделать в PHP? в Java getRequestDispatcher.forward()
это так приятно, но я не могу найти эквивалент через поиск. Я пробовал несколько похожих вопросов, включая следующие, но на самом деле я так и не нашел такой, где бы вопрос и ответ были именно такими, как я хотел. Кажется, что большинство ответов имеют какое-то отношение к cURL, но я не хочу на самом деле получить файл, а просто переслать запрос, чтобы получить доступ к объекту запроса с другой страницы.
Есть ли в PHP эквивалент Java-метода getRequestDispatcher.forward ()?
Дайте мне знать, если я должен включить что-нибудь еще?
Я считаю, что вы можете сделать это с помощью include. Перед отправкой формы просто используйте, как включение, на главной странице:
include ("add.php"); - where the input forms are
после обработки информации включите display.php таким же образом; используя это, display.php будет использовать те же параметры из заголовка, потому что он включен в ту же главную страницу.
вкратце: add.php, process.php и display.php будут модулями для материнской страницы, но загружены в другом состоянии обработки формы.
Надеюсь, поможет!
используйте curl с другим методом get, post. он отправит запрос, а также вернет ответ.
Наиболее распространенный метод передачи сообщений конечному пользователю от страницы к странице называется миганием сеанса.
Это когда вы временно сохраняете переменную в сеансе, пока она не будет прочитана.
Предполагая, что у вас уже есть сеансы в использовании:
На process.php:
$_SESSION['message'] = 'Your data has been saved!';
На display.php:
if (isset($_SESSION['message'])) {
echo $_SESSION['message'];
unset($_SESSION['message']);
}
Вы также можете сохранить весь объект запроса в сеансе.
Так что, если я в курсе, PHP предоставляет только базовый набор инструментов в этом случае. И нет ничего похожего на «вперед» в HTTP изначально. Это просто абстракция / идея фреймворка. Есть два способа добиться этого: скопировать все параметры из запроса и выполнить новый реальный HTTP-запрос (с перенаправлением) или внутреннюю пересылку: таким образом, инфраструктура создаст поддельный запрос и вызовет другой контроллер и действие без выдачи нового физического HTTP-запроса.