【问题标题】:Passing data to "thank you" page when form action goes to third party site当表单操作转到第三方站点时,将数据传递到“谢谢”页面
【发布时间】:2023-04-05 14:35:01
【问题描述】:

我有一个网络表单,它收集用户的邮政编码作为字段之一并发布到第三方网站...

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

表单有一个“redirect_link”字段,告诉第三方网站重定向到我的感谢页面,因此表单处理发生在他们这边。如果我正在处理表单,我可以在将邮政编码保存到我的数据库之前将其存储在会话变量中,然后以这种方式将其传递到感谢页面。但是因为表单处理是由其他人完成的,所以我不确定如何访问该邮政编码字段,将其存储在某处并将其传递到我的感谢页面。我在想也许我可以通过使用 javascript 来获取邮政编码并将其存储在 php 会话变量中来做到这一点?我不确定这是否可行,或者如何做到这一点。

【问题讨论】:

标签: php forms


【解决方案1】:

如果表单有一个“redirect_link”字段,你不能把它作为GET 参数包含在其中吗?

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

您需要将 JavaScript 添加到邮政编码输入中,这样当它更新时,它也会更新隐藏字段。

正如您所提到的,另一种选择是使用 PHP 会话,但由于它也需要会话,因此您不会比在隐藏字段中获得任何好处(例如,如果人们禁用了会话 cookie)。

如果可能的话,我可以想到的第三种选择是使用您自己的表单通过 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 是否具有此功能。如果是这样,这可能是最简单和最好的方法。

【讨论】:

  • 我想这是一个解决方案,@Chris 只需要处理邮政编码字段上的更改事件并相应地更新链接
  • 是的,我想在提交到第三方公司的服务器之前,我需要使用 javascript 使用 zip 字段中的值更新链接。我本来希望避免使用 js,但听起来我必须使用它。
猜你喜欢
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2022-11-03
  • 2018-12-03
  • 2021-06-12
  • 2013-09-10
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多