2

在这一点上纯粹是假设,还没有代码。试图找出最好的方法来做到这一点。我们是“A”公司,我们有两个合作伙伴,“B”公司和“C”公司。在注册表单上,我们收集数据,然后将其传递给合作伙伴“B”或合作伙伴“C”——这部分很好,工作正常。我在前端使用 ajax,在后端使用 cURL 处理器,因此没有人离开我们的网站,只需将数据直接发布到合作伙伴的表单。

不幸的是,由于合作伙伴“B”和“C”所需的数据,我们发布的表单不同,我们必须有 2 个单独的 html 表单文件,每个合作伙伴一个。问题是我们需要通过一个 URL 来完成这一切,而不是为每个合作伙伴提供一个单独的 URL。

我猜我们会使用具有特定网址的“处理程序”页面 - http://www.example.com/parterForm.php

然后在“处理程序”页面中,我们将使开关提供正确的内容。我需要一种方法来平均分配我们向谁发送数据。我想在一个非常精细的 MS 级别上进行切换,例如:

如果时间 = 0-500 ms - 服务 Parter B 页面;

如果时间 = 501-1000ms - 服务合作伙伴 C 页面;

全部在“处理程序”页面中完成- 调用表单作为 php 包括?

我意识到这不是一个特定的代码问题,我很抱歉,这是我以前从未做过的事情,并且正在尝试弄清楚如何做到这一点。顺便说一句,我是一名创意总监,他会编码,没有其他资源可用。谢谢。

4

2 回答 2

2

嗯,是的,你可以这样做。事实上,这会很好地工作。重要的是确保表格发送给正确的合作伙伴。您可以使用$_SESSION它,或者检查发送了哪些字段并从中推断出选择了哪个合作伙伴。

例如:

if( fmod(microtime(),1) < 0.5) include("forms/partner1.php");
else include("forms/partner2.php");

然后提交时:

$partner1fields = array("name","email","country","dateofbirth");
$partner2fields = array("name","address","postcode","ethnicity");
// the above are examples - they should correspond to the $_POST keys you expect
// now check if they match. Array equality depends on order, so sort first
$postkeys = array_keys($_POST);
sort($postkeys);
sort($partner1fields);
sort($partner2fields);
if( $postkeys == $partner1fields) { /* submit to partner 1 */ }
elseif( $postkeys == $partner2fields) { /* submit to partner 2 */ }
else {
    echo "<p>Given keys did not match either partner</p>";
    echo "<p>POST keys: ".implode(", ",$postkeys)."</p>";
    echo "<p>Partner 1 keys: ".implode(", ",$partner1keys)."</p>";
    echo "<p>Partner 2 keys: ".implode(", ",$partner2keys)."</p>";
    echo "<p>Please report this error to the site administrator.</p>";
    exit;
}
于 2013-10-11T14:40:47.323 回答
0

首先,通过MS,我假设您的意思是客户端和服务器之间的延迟?

  1. 使用 javascript 从服务器加载一个小图像或进行 ajax 调用,获取一个字符或其他内容并计时。为了进行测试,您需要进行一些真正的 ping 操作并调整您的 js 时间以反映 ping 往返行程。例如,如果 js 加载图像的时间是 500 毫秒,但 ping 时间只有 80 毫秒,那么可能除以 6 得到结果。这永远不会非常精确,因为客户端和服务器都有处理开销。确保在图像或 ajax 响应中不回显缓存标头或过去的过期时间。

  2. 很简单,如果时间 <= 500 重定向到表单 A,如果时间 > 500 重定向到表单 B 或使用 ajax 加载它们。

于 2013-10-11T14:51:11.507 回答