Как передать данные методом POST?

Cheshir

Новичок
Как передать данные методом POST?

При выполнении определённых условий редиректю пользователя:
PHP:
header("Location: ".$redirect);
Как передедать скрипту, на который редиректимся, данные методом POST? Т.е., нужно эмулировать отправку формы.

GET не подходит.
Кукисы - тоже сомнительны.

Это вообще возможно?
 

ksnk

прохожий
Редирект внутри собственного сайта? Тогда пользуй сессии. Если редирект в чужой сайт - используй curl и показывай результат его выполнения.
 

WP

^_^
Cheshir
Конечно, элементарно, но не с помощью заголовка Location, а с помощью JS. Делаешь форму <form id="myform" method="POST"><input type="hidden" name="param1" value="value1">...</form><script type="text/javascript">document.getElementById('myform').submit();</script>
tony2001
Разве?
ksnk
Причем тут curl? Человеку нужно ПОЛЬЗОВАТЕЛЯ редиректить.
 

insidex

флихтэръер
А если js отключен или, например, редирект нужно делать только через HTTP заголовок...
 

Фанат

oncle terrible
Команда форума
а если сначала послушать невнятного автора - что ему надо, а потом уже вылезать со своими советами и рассуждениями?
 

Cheshir

Новичок
Редирект внутри одного сайта.

Объясняю конкретнее...
Юзер залогинился.
Открыл служебную страницу (доступную только зарегистрированным) с формой.
Но долго думал... и сессия закончилась.
Юзер отправляет форму, но система не узнаёт его и выдаёт форму авторизации.
Юзер вводит логин пароль и отправляет форму, ясное дело, на скрипт авторизации.
Скрипт авторизации передаёт юзера обратно на служебную страницу.
Всё, вроде, хорошо. Но когда пользователь вновь возвращается на страницу, форму надо заполнять заново. Нужно передать поля формы от скрипта авторизации к служебной странице.

Писать килобайты инфы в адресной строке или куках - не катит.
Яваскрипт... тоже не подходит... слишком много "но".

Есть ещё какие-нибудь варианты?

А как вообще работает метод POST? Каким образом передаётся инфа? Мне казалось, что некими заголовками... которые можно отправить вручную. Или как?
 

Фанат

oncle terrible
Команда форума
Есть ещё какие-нибудь варианты?
странно
вроде бы, сессиями ты пользуешься.
И у тебя ещё возникает вопрос, как передать поля формы?

как вообще работает метод POST? Каким образом передаётся инфа? Мне казалось, что некими заголовками... которые можно отправить вручную. Или как?
можно.
но абсолютно непонятно - зачем это нужно в свете описанной проблемы.
какую форму ты собрался отправлять сам себе?
зачем вообще отправлять на сервер, да ещё методом ПОСТ то, что насервере уже и так есть?
 

Cheshir

Новичок
Автор оригинала: Фанат
странно
вроде бы, сессиями ты пользуешься.
И у тебя ещё возникает вопрос, как передать поля формы?
1. Не используются стандартные сессии. Сессии ручные (изобретён, так сказать, свой велосипед). Инфа пишется в файл.

можно.
но абсолютно непонятно - зачем это нужно в свете описанной проблемы.
какую форму ты собрался отправлять сам себе?
зачем вообще отправлять на сервер, да ещё методом ПОСТ то, что насервере уже и так есть?
В момент редиректа а сервере этого нет.
Поля формы считываются из $_POST. А если выводится форма авторизации... то в неё скрытыми полями записываются поля предыдущей... не обработанной формы. Т.е. предыдущая форма сохраняется и передаётся от сервера к юзеру... и обратно... вплоть до редиректа.
Можно, кончено, записывать в файл поля формы. Но, как-то это... не очень нравится...

Поэтому... хотелось бы узнать... всё-таки, как именно можно...
 

Фанат

oncle terrible
Команда форума
1. Не используются стандартные сессии. Сессии ручные (изобретён, так сказать, свой велосипед). Инфа пишется в файл.
и какая разница?
почему нельзя записать "в файл"?
В момент редиректа а сервере этого нет.
Поля формы считываются из $_POST.
как интересно.
а где эе этот массив находится? На луне, что ли?
 

Cheshir

Новичок
Автор оригинала: boombick
Попробуй использовать стандартные сессии.. тебе понравится :)
Так. Это уже другие пути решения. Их несколько. Но для них нужно переделывать уже существующее. Это вариант, конечно, но не приоритетный.

Пока есть желание разобраться с POSTом.
 

Фанат

oncle terrible
Команда форума
Поэтому... хотелось бы узнать... всё-таки, как именно можно...
ТЫ ЗАПАРИЛ МЯМЛИТЬ
тебе с самого начала ответили - можно или нельзя!
разуй глаза, буратина!
 

Cheshir

Новичок
Автор оригинала: Фанат
и какая разница?
почему нельзя записать "в файл"?
Дубль два... это другие варианты. Они имеют место быть... но чуть позже... когда пойму, что с постом не получается.
В файл можно. Но не рентабельно. Нужно связать всего один переход.

а где эе этот массив находится? На луне, что ли?
Массив-то на сервере. Но когда происходит редирект... $_POST появляется новый. В том-то вся и фишка, что вроде и то и другое на сервере, но как НАПРЯМУЮ передать... непонятно.
 

Фанат

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

Cheshir

Новичок
Автор оригинала: Фанат
ТЫ ЗАПАРИЛ МЯМЛИТЬ
Не хами.

тебе с самого начала ответили - можно или нельзя!
разуй глаза, буратина!
Был задан следующий вопрос... как работает POST.
Притом ты сам написал:
Автор оригинала: Фанат
можно.
но абсолютно непонятно - зачем это нужно в свете описанной проблемы.
 

Фанат

oncle terrible
Команда форума
а ты не мямли.
запарил уже своими троеточиями.
или пиши чётко, или не пиши совсем.
Был задан следующий вопрос... как работает POST.
ответ: www.w3.org, там спецификация протокола НТТР.
вперёд и с песней.
Притом ты сам написал:
Я НАПИСАЛ, что можно "заголовки отправить вручную". А тебя интересует, как сделать редирект с постом, чурка.
Ты уже сам забыл, про что спрашивал.

ТЕМ БОЛЕЕ, что никакая отправка вручную тебе не нужна, а вообразил ты её себе только потому, что не соображаешь даже, где у тебя форма, а где - пхп.
 

Gorynych

Посетитель PHP-Клуба
Но долго думал... и сессия закончилась.
вообще-то это правильно. если сессия закончилась данные надо "потерять". Может у Вас и есть некая специфика задачи, которая требует большого времени жизни сессии, но тогда у меня есть пара глупых вопросов:

1) вариант 1: почему не увеличить время жизни сессии?

2) вариант 2: почему не "оживлять" сессиию "дергая" (ох, сейчас Фанат ругаться будет :) ее используя технологию AJAX? например дергая через http://www.sergiopereira.com/articles/prototype.js.html#Reference.PeriodicalExecuter какой-нибудь Ajax.Request или Ajax.Updater ?

P.S. 2 Фанат: если тебе покажется, что пост не к месту - сноси. Но я вдруг задумался: а почему решается проблема того, куда сохранить данные из формы а не проблема жизни сессии? Может стоит поменять задачу?
 
Сверху