Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2011, 16:14   #1
Arassir
Форумчанин
 
Аватар для Arassir
 
Регистрация: 23.10.2008
Сообщений: 230
По умолчанию Отправка данных методом POST

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

Данные я могу передать с помощью сокетов, а вот перенаправление не получается.
Arassir вне форума Ответить с цитированием
Старый 06.07.2011, 17:07   #2
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Это невозможно. Вы не можете передать пост-данные куда-то, а потом направить пользователя, что бы он получил ответ уже оттуда минуя вас.
(Это если я правильно понял, что вы хотите сделать)

Можно сделать что-то подобное тремя путями:

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

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

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


Если у вас есть доступ на удалённый сервер, конечно же, всё становится на порядок проще:

Отсылаете отдельный запрос с вашими пост-полями, готовите там страничку/вбиваете их в БД/в мемкэш/ещёкуданибудь, получаете на запрос в качестве ответа некий ай-ди (из БД, мэмкэша, имя файла/ещёкакойнибудь) по которому вы можете однозначно идентифицировать данные пользователя которые вы туда отослали, и скармливате пользователю простой редирект (лучше всего 301 в хэдэрах, но можно и туподжаваскрипт или мета-НТТР-эквивалент) с упоминанием этого ай-ди. На втором сервере, ориентируясь на полученный от пользователя ай-ди, выдаёте ему то, что ему причитается.

Последний раз редактировалось graymaster; 06.07.2011 в 17:15.
graymaster вне форума Ответить с цитированием
Старый 07.06.2012, 15:32   #3
Arassir
Форумчанин
 
Аватар для Arassir
 
Регистрация: 23.10.2008
Сообщений: 230
По умолчанию

Снова возник данный вопрос

Если у нас есть форма, в которой пользователь вводит логин, пароль, email, то мы можем указать каким способом POST или GET отправить эти данные на другую страницу.

Если указан метод POST, то мы вводим данные, нажимаем кнопку формы и методом POST отправляем их, одновременно с этим переходя на новую страницу.


можно также сделать с помощью Ajax, то есть передать данные на новую страницу и одновременно перейти на неё?
Arassir вне форума Ответить с цитированием
Старый 07.06.2012, 16:10   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Arassir Посмотреть сообщение
можно также сделать с помощью Ajax, то есть передать данные на новую страницу и одновременно перейти на неё?
Непонятно - зачем юзать AJAX в этом случае, если обычная форма делает как раз то, что вам нужно (отправляет данные и осуществляет переход на страницу-обработчик)?
Сделать это можно и через ... AJAX - просто хочется понять смысл всего этого.
Форму можно отправить и без "нажимаем на кнопку" - если что...
Andkorol вне форума Ответить с цитированием
Старый 07.06.2012, 16:19   #5
Arassir
Форумчанин
 
Аватар для Arassir
 
Регистрация: 23.10.2008
Сообщений: 230
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Сделать это можно и через ... AJAX

Как?

Цитата:
Сообщение от Andkorol Посмотреть сообщение
просто хочется понять смысл всего этого
Есть несколько форм и просто input'ов без формы. Надо отправить эти данные на другую страницу методом POST и одновременно перейти на неё.
Кроме того некоторые данные формируются скриптом.
Arassir вне форума Ответить с цитированием
Старый 07.06.2012, 16:48   #6
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

Глупо держать инпуты без формы, имхо.. если всем импутам дать тип хидден формы не будет видно, можно дать ей ид и использовать js
Код:
document.getElementById('id_form').submit();
Mr_ViK вне форума Ответить с цитированием
Старый 07.06.2012, 16:49   #7
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

Ну на крайняк можно из импутов взять значения, сформировать новую полноценную форму и отправить ее....
Mr_ViK вне форума Ответить с цитированием
Старый 07.06.2012, 16:52   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Arassir Посмотреть сообщение
Как?
Извращенным способом - потому искренне не советую.

В обработчике ловите данные из $_POST и помещаете их в сессию.
$.ajax имеет опцию succes (функция, выполняется после успешного запроса), в которой прописываете перенаправление на страницу-обработчик.
После перенаправления извлекаете из сессии переданные ранее данные - и работает с ними.
Повторюсь - это откровенный изврат, правильнее будет пересмотреть логику и реализовать это возможностями web-форм.
Andkorol вне форума Ответить с цитированием
Старый 07.06.2012, 16:56   #9
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

А если реализовать так: изначальная страница: посылаем пост на другой сервер, там он обрабатывается и пересылается обратно, после получения юзер перенаправляется на ту страницу куда отправляли пост-запрос, ну и с юзером можно отправить еще один пост-запрос, если это будет необходимо, хотя смысла в этом не вижу) Ну просто не понимаю ситуацию)
Mr_ViK вне форума Ответить с цитированием
Старый 07.06.2012, 16:58   #10
Mr_ViK
Форумчанин
 
Регистрация: 12.08.2011
Сообщений: 124
По умолчанию

Проще: соберите все инпуты в одну форму (можно через js) и спокойно сабмитните ее с action="ваша удаленная страница"
Или еще вариант, если есть форма, которую юзер не трогает а ее надо отправить, дайте ей ид, и отправте через js
Ну это же проще простого.
Mr_ViK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка данных методом post ANDEREY Работа с сетью в Delphi 4 11.08.2011 10:09
Передача данных методом POST batusai PHP 2 30.10.2010 03:04
Отправка POST Alex Cones Работа с сетью в Delphi 3 18.05.2010 11:07
отправка POST CraZZy RabbIt Работа с сетью в Delphi 8 24.04.2009 16:48
Проблема с передачей данных методом POST Aiden Работа с сетью в Delphi 0 21.09.2008 21:11