Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > header('Location: ... и POST


Автор: Vladimir3 15.9.2007, 20:50
Как передать данные в перенаправленную страницу header('Location: '. $url.'?var=x'); с помощью POST в место GET. Желательно чтобы GET и Cookies были пустыми.

Автор: Serkys 15.9.2007, 21:21
Через header('location: ...') не получится методом POST. Можно при помощи javascript.

Автор: BuShaRt 15.9.2007, 22:39
POST запрос клиенту?  smile С нетерпение жду комментариев тех, кто еще справился с такой задачей....

Пока ждем, не расскажешь, зачем браузеру отправлять POST данные, чтоб он потом перенаправил себя на другую страницу, вместе с ними. Послушай вон товарища, сделай проще, пусть страница грузиться, заполняються поля post-формы и через секунду кнопка submit сама нажимаеться - эфект будет аналогичный.

P.s.: чтоб отправить post-запрос на скрипт, надо всего навсего юзать http://phpclub.ru/detail/article/curl

Автор: ewolf 15.9.2007, 23:17
Простенький пример скрипта, который можно выдать клиенту

<form name=mypost action="othersite.com" method=post>
<input type=hidden name=field1 value="value1">
<input type=hidden name=field2 value="value2">
</form>
<script>document.forms["mypost"].submit();</script>

Автор: Vladimir3 15.9.2007, 23:53
Цитата(BuShaRt @ 15.9.2007,  22:39)
Пока ждем, не расскажешь, зачем браузеру отправлять POST данные, чтоб он потом перенаправил себя на другую страницу, вместе с ними. 

Пример, надо пользователь залогинится с страницы ххх123.php дальше отправляется запрос на login.php и возвращаемся на ххх123.php. Вот POST надо для передачи данных с login.php на ххх123.php. Цель в том что-бы не использовать Cookies.

Автор: BuShaRt 15.9.2007, 23:55
Vladimir3, 
Используйте сесию, в чем проблема?

Автор: Vladimir3 16.9.2007, 00:06
Цитата(BuShaRt @ 15.9.2007,  23:55)
Используйте сесию, в чем проблема?

Я с сессиями не роботал(только читал), так вопрос будет ли знать ххх123.php при переходе с login.php на ххх123.php, номер сессии пользователя, а то я так понимаю сессия это переменная, а они без GET не передаются.

Автор: sandland 16.9.2007, 00:12
все там передается, главное, чтобы в обоих скриптах стартовала одноименная сессия.
пример
Код

<?
// file1.php
session_name('first');
session_start();
$_SESSION[var]=999;
Header("Location:file2.php");
?>


Код

<?
// file2.php
session_name('first');
session_start();
echo $_SESSION[var];
?>



при перенаправлении в file2.php в сессии будет храниться $_SESSION[var] со значением 999....

Автор: Golda 16.9.2007, 00:46
Цитата(Vladimir3 @  16.9.2007,  00:06 Найти цитируемый пост)
а то я так понимаю сессия это переменная, а они без GET не передаются.


Передавать идентификатор сессии можно через cookies, GET или POST. чаще всего используется первый вариант. Замечу, что в любом случае клиент знает только идентификатор сессии, все смысловые данные хранятся на стороне сервера. Поэтому безопасность не страдает. 

Одноименная сессия будет во всех скриптах данного hostname (по умолчанию, это поведение можно изменить специально соответствующими установками, но думаю, это не входит в Ваши планы). Можно имя сессии специально не указывать, т.е. обойтись без функции session_name(). Как уже сказал sandland, в случае одноименной сессии данные данного пользователя (точнее, для данного идентификатора сессии) будут подхвачены после вызова функции session_start()

Автор: Vladimir3 16.9.2007, 00:51
Спасибо за подсказку, попробую сделать.

Автор: BuShaRt 16.9.2007, 10:00
Цитата(Vladimir3 @  16.9.2007,  00:06 Найти цитируемый пост)
Я с сессиями не роботал(только читал)

Не надо делать поспешных выводов.
Читаем и перечитываем раз 5: http://phpclub.ru/detail/article/sessions

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)