перенаправление со специальными заголовками POST - PullRequest
0 голосов
/ 10 сентября 2011

В моей системе пользователь вводит данные в форму, и они обрабатываются PHP-скриптом.

Этот php-скрипт будет манипулировать этими данными, а затем должен перенаправить пользователя кhttps, но также отправлять свои собственные параметры POST.

Так, например, если вызывается

send-me.php?name=chuck+norris
, пользователь должен быть перенаправлен на
https://secret.hideout.com/
, где параметры POST
is_chuck="1"
be_polite="definitely"
run_away="what's the point?"

Возможно ли это?Как?

Спасибо

Ответы [ 4 ]

4 голосов
/ 10 сентября 2011

Если вы не управляете целевым сайтом, я вижу только один способ сделать это на странице PHP <form> с целевым URL-адресом https:// и значениями в качестве скрытых полей.

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

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

2 голосов
/ 10 сентября 2011

Нельзя перенаправить на URL с параметрами POST.

Вы можете перенаправить на URL с параметрами GET (добавленными в конец URL):

https://secret.hideout.com/?is_chuck=1&be_polite=definitely&run_away=now

Вы можете использоватьCURL для вызова URL с параметрами POST, но вы не можете перенаправить на него.

1 голос
/ 10 сентября 2011

Я думаю, что лучший подход - это создать форму и вызвать send из javascript.

в send-me.php после того, как вы проанализируете нужные данные, вы отобразите этот html:

<form name="send" action="https://secret.hideout.com/" method="post">
<input type="hidden" name="is_chuck" value="1" />
...
</form>
<script type="text/javascript">
document.forms.send.submit();
</script>

однако это имеет минусы:

  • https://secret.hideout.com/ будет знать по заголовку Referer, что вы отправили клиента и с его страницы.
  • клиент может изменить данные публикации, чтобы узнать, что было опубликовано.

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

0 голосов
/ 10 сентября 2011

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

Это просто невозможно.POST - это заголовок request , а не ответ.

Таким образом, не вмешивайтесь между пользователем и какой-либо службой.
ВСЕГДА существует законный способ получить результат транзакции.Используй это.

...