Всем привет. Это буде короткая запись но очень полезная.
Тема данной публикации: Как сделать redirect в PHP и отправить POST данные.
Кто сталкивался тот знает в чем проблема. Давайте посмотрим основные варианты которые предлагают на форумах.
1) Создать форму и отправить ее.
Суть заключается в том что бы на лету сгенерировать html форму и отправить ее.
Пример кода
function redirect_post($url, array $data) { ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript"> function closethisasap() { document.forms["redirectpost"].submit(); } </script> </head> <body onload="closethisasap();"> <form name="redirectpost" method="post" action="<? echo $url; ?>"> <?php if ( !is_null($data) ) { foreach ($data as $k => $v) { echo '<input type="hidden" name="' . $k . '" value="' . $v . '"> '; } } ?> </form> </body> </html> <?php exit; }
Как на меня довольно страшно выглядит тай костыль костылем.
2) Сохранить данные в Session
Думаю пример кода делать не нужно и там понятно как работает.
Тут я скажу что это один из самых адекватных способов, хотя влечет за собою несколько лишних действий. (Проверка, удаление и так далее).
Другое.
Примеров еще много начиная от Curl проксированния заканчивая fopen. Думаю дальнейшие приведение примеров лишние.
А теперь Самое адекватное и правильное решение.
Заключается оно в том что бы использовать 307 код редиректа.
307 - редирект это временое перенаправление - так сказано в первых 4 силках в Google по запросу 307 Redirect.
А теперь главный нюанс "Если указать данный код то с редиректом будут отпрвленны данные из переменой $_POST"
Реализация PHP
<?php $_POST['firstName'] = 'Maykl'; $_POST['lastName'] = 'Yatsyshyn'; header("Location: <URL>", true, 307); ?>
Использование в Opencart и сборках
<?php // $this->request->post = &$_POST; $this->request->post['firstName'] = 'Maykl'; $this->request->post['lastName'] = 'YATSYSHYN'; $this->response->redirect($URL, 307); ?>
Замечание вместе с данными которые вы записали (firstName, lastName) будут отправлены все данные которые уже били в $_POST это может пригодится когда вам нужно перенаправить данные с формы на другой обработчик или же назад на форму.
1 коментар
Recommended Comments
Створіть аккаунт або увійдіть для коментування
Ви повинні бути користувачем, щоб залишити коментар
Створити обліковий запис
Зареєструйтеся для отримання облікового запису. Це просто!
Зареєструвати аккаунтВхід
Уже зареєстровані? Увійдіть тут.
Вхід зараз