Перенаправить URL с данными Post

#php #post

#php #Публикация

Вопрос:

Я хочу перенаправить пользователя со страницы 1 на страницу 2 с некоторыми данными POST.Страницы 1 и page2 находятся в двух разных доменах, и я контролирую оба из них

Страница 1

 <?php
$chars="stackoverflowrules"
?>
  

Я хочу отправить символы в качестве данных post и перенаправить на страницу 2.

Затем на одной странице 2 я хочу использовать данные POST, такие как

 <?php
$token = $_POST['chars'];
echo $token;
?>
  

Ответ №1:

Я сделал это, используя форму и JS

На странице 1

 <?php
$chars="stackoverflowrules";
?>
<html>
<form name='redirect' action='page2.php' method='POST'>
<input type='hidden' name='chars' value='<?php echo $chars; ?>'>
<input type='submit' value='Proceed'>
</form>
<script type='text/javascript'>
document.redirect.submit();
</script>
</html>
  

На странице 2

 <?php
$token = $_POST['chars'];
echo $token;
?>
  

Ответ №2:

  1. На странице 1 используйте curl для публикации данных на странице 2.
  2. Там где-нибудь сохраните отправленные данные (база данных?).
  3. Перенаправление со страницы 1 на страницу 2
  4. Восстановил данные обратно.

Ответ №3:

Вы хотите использовать curl() для этого.

На page1.php, выполните следующее:

 $data = $_POST; 

// Create a curl handle to domain 2
$ch = curl_init('http://www.domain2.com/page2.php'); 

//configure a POST request with some options
curl_setopt($ch, CURLOPT_POST, true);

//put data to send
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  

//this option avoid retrieving HTTP response headers in answer
curl_setopt($ch, CURLOPT_HEADER, 0);

//we want to get result as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//execute request
$result = curl_exec($ch);

// now redirect to domain 2
header("Location: http://domain2.com/page2.php");
  

На странице 2 вы можете получить данные POST:

 <?php

$token = $_POST['secure_token'];
echo $token;

?>
  

Комментарии:

1. Это не будет работать так, как ожидалось, потому что сейчас есть 2 запроса на страницу 2. Одним из них является POST из curl. Второй — GET from header() . Вы пытаетесь получить $_POST из последнего, что не сработает.