我想知道如何将php变量从一台服务器发送到另一台服务器上的另一个php脚本?
我在2个不同的服务器上有2个php脚本,其中一个必须将vars发送给另一个。 我一直在寻找运气不佳。 非常感谢任何帮助。
答案 0 :(得分:3)
您可以使用curl
并将变量作为GET值发送。
这样的事情:
$data = "data you want to send";
$data = urlencode($data);
$url = "http://example.com?data=" . $data;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_exec($ch);
curl_close($ch);
我们假设$data = "foobar"
从PHP脚本执行上述操作与从浏览器访问http://example.com?data=foobar
的人员相同。
您显然可以使用url将其发送到任何脚本:
http://example.com/yourscript.php?data=foobar
在yourscript.php
,您可以在$_GET['data']
获取数据,进行一些输入验证以确保从您的脚本发送,而不是通过浏览器从其他人发送(稍后会详细介绍),然后继续你的脚本。
要使其正常工作,yourscript.php
必须驻留在youtr webhost的public html
文件夹中,以便其他脚本可以访问它。
安全强>
无论您是通过GET
还是POST
传递数据,其他人都可以向您的脚本发送(可能是恶意的)数据。因此,当yourscript.php
接收数据时,需要有一种方法来确保您是脚本的发送者。实现这一目标的一个简单方法是:决定只有你知道的任意数字,比如12。
将数字与您传递的数据连接起来并计算md5哈希并将其作为另一个get变量发送。
在这种情况下,您需要计算md5("12foobar")
,网址为:http://example.com/yourscript.php?data=foobar&auth=hash
当yourscript.php
收到数据时,它会计算相同的哈希值(使用数字12,其他人都不知道),如果计算的哈希值与$_GET['auth']
匹配,则可以确定已发送数据。
如果有人试图模仿你并发送数据,他们就不会知道你如何计算哈希值,因此会发送错误的哈希值。
<强> PS 强>
确保坚如磐石的安全性的另一种方法是在$_SERVER['REMOTE_ADDR']
检查用户代理的IP地址。如果它是您的其他脚本所在的webhost的IP地址,那么您知道它就是您。
我还没有想过这个方法,所以可能存在一些漏洞。
答案 1 :(得分:1)
您可以使用GET查询字符串(second_php?var=value
)或使用POST方法的curl连接,然后通过POST发送数据。
答案 2 :(得分:0)
您应该使用SOAP。它用于远程函数调用,它只会带来比仅调用http请求更多的开销,但它也可以保证远程函数将被执行(或将导致错误),它将直接返回您需要的任何数据类型,我相信这是这项技术的开发目的是:)