PHP - перенаправить и отправить данные через POST - PullRequest
46 голосов
/ 15 июня 2010

У меня есть онлайн-шлюз, который требует отправки HTML-формы со скрытыми полями. Мне нужно сделать это через PHP-скрипт без каких-либо HTML-форм (у меня есть данные для скрытых полей в БД)

Для этого отправка данных через GET:

header('Location: http://www.provider.com/process.jsp?id=12345&name=John');

А для этого нужно отправлять данные через POST?

Ответы [ 14 ]

0 голосов
/ 10 мая 2016

Старый пост, но вот как я его обработал.Используя метод newms87:

if($action == "redemption")
{
    if($redemptionId != "")
    {
        $results = json_decode($rewards->redeemPoints($redemptionId));

        if($results->success == true)
        {
            $redirectLocation = $GLOBALS['BASE_URL'] . 'rewards.phtml?a=redemptionComplete';
            // put results in session and redirect back to same page passing an action paraameter
            $_SESSION['post_data'] = json_encode($results);
            header("Location:" . $redirectLocation);
            exit();
        }
    }
}
elseif($action == "redemptionComplete")
{
    // if data is in session pull it and unset it.
    if(isset($_SESSION['post_data']))
    {
        $results = json_decode($_SESSION['post_data']);
        unset($_SESSION['post_data']);
    }
    // if you got here, you completed the redemption and reloaded the confirmation page. So redirect back to rewards.phtml page.
    else
    {
        $redirectLocation = $GLOBALS['BASE_URL'] . 'rewards.phtml';
        header("Location:" . $redirectLocation);
    }
}
0 голосов
/ 11 апреля 2016

Да, вы можете сделать это на PHP, например. в

Silex или Symfony3

с использованием подзапроса

$postParams = array(
    'email' => $request->get('email'),
    'agree_terms' => $request->get('agree_terms'),
);

$subRequest = Request::create('/register', 'POST', $postParams);
return $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);
0 голосов
/ 21 июня 2013

Я использовал следующий код для сбора данных POST, которые были отправлены из form.php, и затем связал их с URL-адресом, чтобы отправить их НАЗАД в форму для проверки правильности. Работает как шарм и фактически преобразует данные POST в данные GET.

foreach($_POST as $key => $value) {
   $urlArray[] =  $key."=".$value;  
}
$urlString = implode("&", $urlArray);

echo "Please <a href='form.php?".$urlString."'>go back</a>";
0 голосов
/ 15 июня 2010

Боюсь, вам понадобится CURL для этой задачи. Хороший простой способ сделать это здесь: http://davidwalsh.name/execute-http-post-php-curl

Надеюсь, что поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...