我想从我的其他网站调用一个php函数......这是可能的 php文件在我的服务器上看起来像这样 - daplonline.in/short.php
<?php
function writeMsg() {
echo "Hello world!";
}
?>
我想从我的其他网站调用此功能是否可能?
<?php
include("http://daplonline.in/short.php"); //it is 777
writeMsg();
?>
答案 0 :(得分:1)
您正在寻找的内容在Java中称为RMI。但据我所知,PHP中没有任何内容可以执行&#34;远程方法调用&#34;。所以我认为这是不可能的。
但是你可以编写一个脚本,根据请求的URI调用正确的函数。
所以让我们对$_GET
参数说:
然后在您的rmi.php
中,您必须根据method
参数调用正确的函数。
<?php
list($scriptName, $methodName) = explode('.', $_GET['method']);
require $scriptName . '.php';
echo serialize(call_user_func($methodName));
快速而肮脏地抽象它。您可以unserialize()
rmi.php
的响应,并获取返回的数据。
答案 1 :(得分:0)
是的,你可以。然而,这是一个巨大的安全风险。
此选项允许使用具有以下功能的URL感知fopen包装器:include,include_once,require,require_once。
ini_set('allow_url_include', 1);
答案 2 :(得分:0)
您可以使用CURL
连接到该文件,并指定参数。
该文件可以检查该参数并调用特定函数。
这不完全是你想要的,但它应该有效。最好将它变成API,而不是包含外部PHP文件,然后从中调用函数。您可以通过这种方式添加更多安全性,例如仅接受来自某些URL的连接。
short.php
将包含类似
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg();
?>
来自其他服务器的文件可以包含
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://daplonline.in/short.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
$result
将是short.php
脚本