Update: This is NOT a duplicate of How do I send a POST request with PHP?. The solutions there don't work for me, they just output the result of the request, I don't want to do this, I want to send the user to the external site, it is secure website for credit card payment processing.
Update 2: I've added a diagram below to try and clearly explain what I'm trying to do
Here's what I'm trying to do:
a html form is submitted to a php script
the php script does some processing on the data and then submits data via POST request to an external website
I do not want to receive the result of the POST request in my PHP script, instead I just want to send the user to the external site where they see the result of the POST
I'm thinking curl is not suitable for this task as I'm not interested in receiving the result of the request back, I just want to send the user to the next site just as if they submitted the form directly.
To put this another way, I want to submit a form to an external website but I want to submit it to my own script first so I can process the data and send email notifications and then submit onwards to the external website with some new calculated data added.
One way I can think of doing this is to output the new form output as hidden fields along with javascript to auto-submit the form but there has got to be a more straightforward, robust way to do it without relying on javascript. Maybe by manipulating headers, or maybe there is already a php function to simply submit a post request and redirect to the result?
Long story short: no, it's not possibile using PHP.
One way I can think of doing this is to output the new form output as hidden fields along with javascript to auto-submit the form ...
It's the only way to do it.
The question is a possible duplicate of PHP Redirect with POST data.
As a suicide solution, you may consider to use HTTP 307 - Temporary Redirect.
From the HTTP/1.1 documentation linked above:
If the 307 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.
My bold simply emphasizes that the redirect without the user confirmation actually depends on the browser's implementation of the protocol.
The redirect can be implemented in the PHP script which receives the POST request as follows*:
header('HTTP/1.1 307 Temporary Redirect');
header('Location: <your page in an external site>');
Basic usage Example:
page1.html - the page which contains the form
<html>
<body>
<form method="POST" action="page2.php">
<input name="variable1" />
<input name="variable2" />
<input type="submit" />
</form>
</body>
</html>
page2.php - the page which processes your POST data before redirect
<?php
if (isset($_POST['variable1']) && isset($_POST['variable2'])) {
//do your processing stuff
header('HTTP/1.1 307 Temporary Redirect');
header('Location: page3.php');
exit;
} else
echo 'variable1 and variable2 are not set';
page3.php the page to which the POST data has to be redirected (i.e. the external site)
<?php
if (isset($_POST['variable1']) && isset($_POST['variable2'])) {
foreach ($_POST as $key=>$val)
echo $key . ' = ' . $val . '<br>';
} else
echo 'variable1 and variable2 are not set';
* don't try this at home!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With