【问题标题】:PHP - Send Form Data from 1 Script to Another [closed]PHP - 将表单数据从一个脚本发送到另一个 [关闭]
【发布时间】:2016-04-13 14:26:27
【问题描述】:

我有一个将 POST 数据发送到 PHP 脚本的表单。处理完毕后,我使用Header( Location: 'thankyou.htm") 将用户重定向到感谢页面。

我想要做的是让 PHP 脚本将所有表单数据发送到另一个 PHP 脚本以进行进一步处理。如果我在 1 个脚本中完成所有操作,则由于与另一台服务器执行 PING/POST 需要很长时间(7-12 秒以上)。见下图。

我该怎么做?

$email = $_REQUEST["email"];
$name = $_REQUEST["f_name"];
$website = $_REQUEST["website"];

PS - Script2 在外部服务器上执行 PING 以验证数据……这需要很长时间。虽然发生这种情况 - 页面正在为用户“加载”......这看起来很糟糕。

PSS - 我不是程序员 - 所以我在这里寻求帮助。请提供一些简单的“示例代码”如何将 $name、$email 和 $website 从脚本 1 发送到脚本 2。

感谢大家的帮助。

PS3 为什么要否决这个问题?这是我遇到的一个合理问题......我什至花了 30 分钟制作图表...... :(

【问题讨论】:

  • 您可以在另一个脚本中运行一个脚本,其中包含:include('script2.php'); 再次阅读,我相信您的问题是时间,而不是功能。对吗?
  • @kainaw - 这将使 script1 从 script2 执行代码...我想将它们分开以加快速度...而不是包含我可以只从 script2 复制/粘贴代码...
  • 不使用 AJAX,PHP 是“线性的”。您需要以某种方式将 script2 和thankyou 结合起来。您可以在感谢页面的结束开始 或感谢页面的之前 包含script2。它是一个“大”脚本,需要很长时间才能运行吗?如果没有,那么只需使用 require_once 'script2.php'; 将其合并到“thankyou”页面中(请注意,thank you 可能需要是thankyou.php)
  • 仅供参考,更多上下文是有帮助的。 script2 是做什么的?需要很长时间吗?您提到“加快速度”。你在加速什么?
  • @cale_b 问题是 script2 需要 7-12 秒才能运行。他不希望用户等待。

标签: php forms redirect curl send


【解决方案1】:

http://php.net/manual/en/book.curl.php

您可以在 script1 中创建 curl 请求,并将数据发送到 script2。转发数据后,您可以将用户重定向到thankyou.htm。

您可能想要添加一个图形,让用户知道他们的请求正在处理中(从 UI/可用性的角度来看)。

<?php
// initialize cURL
$ch = curl_init();

// set the options
curl_setopt($ch, CURLOPT_URL,"http://www.myurl.com/script2.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
            http_build_query(array('name' => $name, 'email' => $email, 'website' => $website)));

// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// execute the curl request
$server_output = curl_exec ($ch);

// close it
curl_close ($ch);

// further processing ....
if ($server_output == "OK") {
    //redirect to thankyou.htm
} else {
    //tell the user what went wrong, or something.
}

?>

【讨论】:

  • 前段时间我试图理解 cURL,但这对我来说没有意义——我不是程序员。您能否提供简单的“示例代码”如何使用 cURL 将脚本 1 中的 $name、$email 和 $website 发送到脚本 2?谢谢
  • 谢谢你的代码 - 我会继续测试它。在 SCRIPT 2 - 我如何“接受”或“接收”这些变量?和脚本 1 一样吗? $email = $_REQUEST["email"]; ...再次感谢
  • 这可能需要很长时间,因为 curl 不是异步的,curl_multi 是异步的,但我还没有使用过。 php.net/manual/en/function.curl-multi-exec.php 有一个如何异步调用两个 curl 请求的示例。您的汽车可能会这样做,但消除一个请求,并让您的代码运行得更快一些。是的,它应该像在脚本 1 中一样接收它们。
  • 所以我根据你的脚本设置“进一步处理”,并且不要得到($server_output == "OK") .... 这是我的 SCRIPT 2 代码(基本上是为了测试它将变量写入 CSV 文件:@ 987654326@
  • 作为 $server_output 返回的内容是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 2017-12-17
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 2010-12-06
相关资源
最近更新 更多