【问题标题】:Submit form remote, confirmation local远程提交表单,本地确认
【发布时间】:2014-02-25 18:00:44
【问题描述】:

我们有一个网站用户可以在我们的网站上填写的表格。表单提交到另一个站点并由另一个站点处理。但是,当用户提交表单时,我想在我们自己的网站上显示一个简单的确认页面。

很遗憾,我无权访问远程站点的代码,也无法指定本地确认页面。

流程如下所示:

1) 用户在我们的网站上填写表格并点击提交。

2) 表单信息被发送到远程站点

3) 在我们的网站上向用户显示一个简单的“谢谢”页面。它不需要显示或确认任何提交的数据。

我曾想过创建并提交一个 php 脚本,该脚本将简单地将查询字符串传递给远程站点,然后显示我们的本地“谢谢”页面。我怀疑这可能很简单,但我是一个 php 新手,不知道该怎么做。

有人知道这是否可能吗?完成这样的事情的代码是什么?还是我错过了更好的方法?

我完全陷入困境,感谢您提供的任何帮助。

【问题讨论】:

  • 提交后远程站点有反馈吗?
  • Ajax怎么样?
  • 表单确实显示了自己的确认屏幕,但它是为远程站点标记的。这就是为什么我们要使用我们自己的确认页面(所以它不会混淆用户)。我们不需要从远程站点返回的任何信息。

标签: javascript php jquery forms


【解决方案1】:

我认为您必须使用 Curl,请参阅我的示例示例

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.w3schools.com/PHP/welcome.php' );

curl_setopt($ch, CURLOPT_POST, TRUE);//Instruct cURL to do a regular HTTP POST

//Specify the data which is to be posted
$post_data['name'] = 'xyz';
$post_data['email'] = 'value';

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);


curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);// Tell curl_exec to return the response output as a string

// Execute the cURL session

$response = curl_exec($ch );

// Close cURL session and file

curl_close($ch );

echo $response; 
?>

【讨论】:

    【解决方案2】:

    由于您无法控制远程站点,也无法控制其输出。这表明您无法选择在提交 from 后将请求重定向到何处,因此将您的表单重定向到远程站点不是解决方案。 (除非远程站点有回调机制,您可以在其中设置在提交表单后重定向回哪个 url,例如 paypal)

    因此,您可以使用AJAX (what is ajax) 将数据发送到远程站点,而无需将用户重定向到任何地方,并且一旦提交了 AJAX 请求,您就可以查看给用户的感谢消息。但是,您无法知道远程站点是否已成功接收到表单(除非他们输出某个文本或消息!)

    因此,一种方法是使用 AJAX,这是一个带有 JQuery 的 AJAX 示例。

     //Using JSONP if the remote site supports it
    $.ajax({
      dataType: 'jsonp',
      data: 'id=10',
      jsonp: 'jsonp_callback',//false? 
      url: 'http://www.google.com'
    }).always(function () {alert("Thank you ... ");} );
    

    如果远程域支持 JSONP,您可以直接向它发送请求,但仅限于 GET 请求。

    如果您现在从浏览器控制台运行该代码,您将收到消息。但这并不能保证远程站点已经收到它,这就是为什么消息在always 函数中,而不是在donesuccess 中,因为它将返回整个远程站点页面。

    请注意,将 ajax 请求发送到与发送者不同的站点是一个安全问题,因此您可以尝试使用不同的方法,例如 this,这意味着将数据发送到您的站点,然后使用一些 php 来提取数据并将其传递给远程站点。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2011-12-12
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2021-09-17
    相关资源
    最近更新 更多