Официальный сайт студ.городка НГТУ
Программирование и БД » Передача переменной методом POST 

#1  10.02.09 00:41

Передача переменной методом POST

Нужно передать некоторые данные между двумя скриптами расположенными на разных хостах. Методом GET я делаю это так:

файл test.php на серевере www.sitename1.com
---

<?php

header("Location: http://www.sitename2.net/index.php?data1=";.$data1."&data2=".$ data2);

?>

----
файл index.php на сервере www.sitename2.net
---
<?php

$gData1 = $_GET['data1'];
$gData2 = $_GET['data2'];

?>
----

Как можно аналогичным образом передать данные, используя метод POST?
Для большей понятности скажу по другому: мне нужно передать данные методом POST от одного PHP скрипта другому PHP скрипту, на разных серверах. Без использования дополнительных средств: javascript и html форм и т.д. Как я это делаю методом GET см. выше.

Мож кто сталкивался? Я уже пару часов бьюсь над этим, никак не получается :( Мне нужна именно передача с последующим редиректом на эту страницу!

Offline

#2  10.02.09 01:32

Re: Передача переменной методом POST

что ты хочешь я понял, но не вижу выхода, кроме вставки формы со скрытыми инпутами и переходом по action куда тебе надо.

Как я понял, тебе надо передать данные скрытые от пользователя данные с одного сервера на другой. Попробуй использовать cookies.

Исправлено Клавишник (10.02.09 01:32)

Offline

#3  10.02.09 08:01

Re: Передача переменной методом POST

Клавишник написал(а):

Как я понял, тебе надо передать данные скрытые от пользователя данные с одного сервера на другой. Попробуй использовать cookies.

Куки тут не помогут, т.к. скрипт расположенный в sitename2 не сможет читать куки установленные sitename1. Максимум что они могут это чтобы поддомены могли читать куки, если напрямую указывается домен, четвертый вроде параметр.

А методом пост такую штуку не сделать, локейшн передает необработанный хеадер, поэтому в твоем случае только гет. А чем тебя гет не устраивает? и чем тебя не устраивает скрытая форма? будет и редирект на другую страницу и данные в посте уйдут.

Исправлено chmaxx (10.02.09 08:03)

Offline

#4  10.02.09 08:50

Re: Передача переменной методом POST

Да, с куками не получиться, согласен.

chmaxx написал(а):

А чем тебя гет не устраивает?

Ну например есть сайт, чужой, с какой-то формой которая переменные методом POST передает и надо передать ему параметры, например залогиниться автоматом или т.п.

chmaxx написал(а):

чем тебя не устраивает скрытая форма?

натыкался на это решение, но надеялся найти что-то поизящнее :)

Offline

#5  10.02.09 10:22

Re: Передача переменной методом POST

Кощей написал(а):

Да, с куками не получиться, согласен.

chmaxx написал(а):

А чем тебя гет не устраивает?

Ну например есть сайт, чужой, с какой-то формой которая переменные методом POST передает и надо передать ему параметры, например залогиниться автоматом или т.п.

Ну это как бы хак, и если чужой сайт делали нормальные программисты, то они реферер проверяют.

Offline

#6  10.02.09 13:56

Re: Передача переменной методом POST

ну так это на пхп элементарно делается.

1. берём прогу wireshark, ставим, включаем мониторинг трафика и ставим фильтр "http" (ну или можно использовать любую прогу, которая http заголовки может читать)
2. логинимся на нужный сайт с помощью любого браузера
3. смотрим, что он отправил серверу
4. в пхп есть функция header(); которая отправляет заголовки в том виде, как их напишешь.
5. вот этими заголовками набираем всю ту же последовательность, которую отправляет браузер серверу.

Вот так данные передаются хоть каким методом. Основная проблема совсем не в этом, а в том, что потом скрипт должен обработать ответ от сервера и эмулировать сохранение куки у себя, если это авторизация.

Чтобы не заморачиваться самому, на PEAR и прочих фреймворках, написаны сотни готовых подобных эмуляторов. Проще их поискать

Offline

#7  10.02.09 16:41

Re: Передача переменной методом POST

насколько я помню curl умеет слать куки-данные, как и пост в принципе.
pear как раз его и использует для эмуляции.

Offline

#8  10.02.09 19:00

Re: Передача переменной методом POST

Antony, попробовал. нифига не вышло. Заголовки оказались такими как и предполагалось (до этого также пробывал отправлять). Попробовал еще раз в различных вариациях - не помогает. Опера предлагает сохранить файл, но не сохраняет, а експлорер ничего не делает.

Antony написал(а):

Основная проблема совсем не в этом, а в том, что потом скрипт должен обработать ответ от сервера и эмулировать сохранение куки у себя, если это авторизация.

Как раз такой проблемы нет! Ведь все же в томже окне должно делаться. Скрипт не должен ничего обрабатывать, а должен просто методом POST послать данные.

Offline

#9  10.02.09 22:23

Re: Передача переменной методом POST

Кощей написал(а):

Как раз такой проблемы нет! Ведь все же в томже окне должно делаться. Скрипт не должен ничего обрабатывать, а должен просто методом POST послать данные.

проблема есть)
потому что окно - на компе у юзера, а скрипт - на сервере) у юзера и у сервера разные айпи. поэтому напрямую данные и не послать. скрипт в любом случае будет посредником. т.е. скрипт может слать всё правильно, ему открывается сессия, но эта сессия не находится в окне у юзера и ему не принадлежит.

Когда ты отсылаешь юзера редиректом по ссылке с переменными - ты даёшь директиву браузеру юзера, а когда со скрипта посылаешь методом пост - браузер никаких директив не получит.

если нужно напрямую заставить браузер отослать что-то методом пост - поможет только скрытая форма и яваскрипт. можно ещё без скрытой формы аяксом. но по-другому никак.

Я так понимаю даже, что подобный редирект сессии от скрипта браузеру противоречил бы всем нормам безопасности.

вопрос-то стоял конкретно:

Кощей написал(а):

Нужно передать некоторые данные между двумя скриптами расположенными на разных хостах

если нужно заставить браузер передать что-то методом пост - то вопрос задан некорректно.

Offline

#10  11.02.09 01:04

Re: Передача переменной методом POST

Antony, сначала хотел возразить, но потом еще пару раз перечитал и понял что ты наверное прав :)
Едиственное что, вопрос был и конкретный и корректный:

Кощей написал(а):

Нужно передать некоторые данные между двумя скриптами расположенными на разных хостах. Методом GET я делаю это так:

------

Как можно аналогичным образом передать данные, используя метод POST?

и даже был перефразирован для большей внятности.

Тему можно считать закрытой так как выснили, что напрямую методом POST данные так передать нельзя.

Offline

Программирование и БД » Передача переменной методом POST 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.052 сек.
Выполнено 14 запросов.