我正在尝试在PHP中的两个站点之间传输大型数组。我是两个人的管理员。 该阵列是在一个站点上创建的,在创建之后我希望自动将用户重定向到另一个站点,然后传递处理过的数组。
我无法使用SESSION超全局,因为它仅限于特定域。 GET不合适,因为阵列太长。 我不确定POST是否合适,如果有办法自动发送数据而不强迫用户点击按钮并提交一些表格。我知道javascript可以用于此,但更喜欢有更健壮的东西。
我对PHP比较陌生,并且很想听听其他任何表现方式。 谢谢!
答案 0 :(得分:4)
最简单的方法是使用像cURL这样的HTTP库并设置并向其他站点发送POST请求。还包括用户IP地址将允许您关联发布的数据。如果没有JavaScript,您无法使用POST数据重定向用户。
使用上述方法您可能想要了解的一点是,根据实施方式,用户可能会在数据出现之前到达。
HTTP规范中定义的POST没有限制,但根据php配置,您可能会遇到在其他服务器上处理它的问题(取决于您的意思)。 (我认为POST限制默认设置为8MB)
答案 1 :(得分:2)
通过cURL functions发送HTTP POST请求,并将serialize() ed数组添加到请求正文中。
答案 2 :(得分:2)
我会做这样的事情:
http://ServerB/?data_token=[TOKEN GENERATED IN STEP 1]
答案 3 :(得分:1)
好吧,如果他们都在同一台服务器上,你就可以劫持其他会话。我以前用它来跳转到安全服务器,使用第一个主机上的session_id()函数来获取会话,然后使用相同的函数在第二个主机上设置它。
答案 4 :(得分:1)
已发送阵列(ar)从服务器(a)到服务器(b)
服务器(a)为服务器(b)生成唯一网址(网址),其中包含数组( ar)使用json_encode(ar)编码为例如json。这个数组(ar)应该使用例如mysql或只是一个简单的文本文件存储在 url 。
$uid = md5(uniqid(mt_rand(), true)); // to generate unique id
服务器(a)将浏览器重定向到服务器(b),还包含$ uid
$url = "http://server-b/page"; // url to page
header('Location: $url?uid=$uid');
服务器(b)从服务器(a)获取网址的内容,并将内容解码回数组(AR)强>
$uid = $_GET['uid']; // uid
$url_server_a = "http://server-a/webservice?uid=$uid";
$ar = json_decode(file_get_contents($url_server_a));
答案 5 :(得分:0)
我猜你可以将它序列化,将其保存为可从其他服务器访问的文件,并从其他服务器再次加载。这样,不需要用户操作,但您必须保护保存文件的目录,以避免隐私问题。
编辑:我假设他们在不同的服务器上,否则会更容易......
答案 6 :(得分:0)
我建议您在创建“Array”之后将其与ID(并存储在某处)相关联,然后使用此ID重定向到另一个。从站点2使用ID,您可以调用站点1上的页面,该页面返回“数组”
答案 7 :(得分:0)
如果是我,我会将信息存储在其他媒介中:例如,一个memcache类型的环境,或者两者都可以访问的数据库。
答案 8 :(得分:0)
创建数组后,您可以快速生成一个页面,其中包含隐藏字段中的数据。然后,此页面可以自动将表单(使用method =“POST”)提交给您的重定向。
答案 9 :(得分:0)
您可以将数组解码为JSON并发送链接到第二个服务器,其中包含临时JSON文件的下载,只需将JSON文件重新解码回PHP,您就不必使用LONG URL。 / p>