Всем привет. Это буде короткая запись но очень полезная.
Тема данной публикации: Как сделать 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 Comment
Recommended Comments
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now