Передача данных на страницу «спасибо», когда действие формы переходит на сторонний сайт

У меня есть веб-форма, которая собирает почтовый индекс пользователя как одно из полей и сообщений на стороннем сайте …

<form name = "foo" action="https://thirdpartysite.com" method="post"> 

В форме есть поле «redirect_link», которое сообщает стороннему сайту перенаправить на мою страницу с благодарностью, поэтому обработка формы происходит на их стороне. Если бы я выполнял обработку формы, я мог бы сохранить zip-код в переменной сеанса перед сохранением его в моей базе данных и передать его на страницу благодарности. Но поскольку обработка формы выполняется кем-то другим, я не уверен, как я могу получить доступ к этому почтовому индексу, хранить его где-то и передавать его на мою страницу с благодарностью. Я думаю, может быть, я мог бы это сделать, используя javascript для захвата почтового индекса и сохранения его в переменной php session? Я не уверен, что это сработает или как это сделать.

Если в форме есть поле «redirect_link», вы не могли бы просто включить его в качестве параметра GET ?

 <input value="http://www.somesite.com/thankyou.php?zip=12345" type="hidden" name="redirect_link" /> 

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

Как вы упомянули, другой вариант будет заключаться в использовании сеансов PHP, но поскольку он также потребует сеансов, вы не получите ничего, кроме того, что делаете это в скрытом поле (например, если у людей отключены cookies сеанса).

Третий вариант, который я мог бы подумать, если это возможно, – использовать вашу собственную форму для отправки данных на сторонний сайт с использованием cURL. Это, очевидно, будет работать только в том случае, если пользователю не нужно ничего делать на удаленном сайте:

 $url = 'http://www.othersite.com/script.php'; $data = array( 'name' => $name, 'email' => $email, ... ); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($data)); curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($data)); //execute post $result = curl_exec($ch); //close connection curl_close($ch); 

И, наконец, нередко сайты, которые перенаправляют пользователя на ваш сайт, будут иметь возможность автоматически добавлять определенные вещи к URL-адресу возврата или отправлять данные POST на него. Проверить с помощью API сайта, который вы используете, есть эта способность. Если это так, это, вероятно, будет самым простым и лучшим способом сделать это.