如何从外部域名调用PHP变量?多站点统一配置需求咨询
问题描述
我有一个位于domain1.com/script1.php的PHP脚本,内容如下:
//my database connections, check functions and values, then, load: $variable1 = 'value1'; $variable2 = 'value2'; if ($variable1 > 5) { $variable3 = 'ok'; } else { $variable3 = 'no'; }
需要在25个不同域名、服务器及IP的站点(如domain2.com/site.php、domain3.com/site.php等)中调用该脚本内的变量,实现单个文件统一控制所有站点,避免逐个复制修改脚本。目标站点的site.php需要实现:
echo $variable1 . $variable2 . $variable3; //loaded by script.php another domain
限制条件:
- 无法使用URL GET传参(如
?variable1=abc) - 仅具备基础PHP能力,对其他技术了解有限
- 需要低成本方案,可选方向包括API、Cookie、Javascript、JSON或PHP跨域include等
可行低成本方案
方案1:将script1.php改造为JSON接口(最推荐)
这是最稳妥、符合跨域规范的方案,不需要复杂配置,适配基础PHP能力的开发者。
改造domain1.com/script1.php
保留原有逻辑,新增跨域响应头并将变量输出为JSON格式:
// 原有的数据库连接、校验逻辑保留 $variable1 = 'value1'; $variable2 = 'value2'; if ($variable1 > 5) { $variable3 = 'ok'; } else { $variable3 = 'no'; } // 允许所有域名跨域请求(如需限制,把*换成具体域名,多个用逗号分隔) header("Access-Control-Allow-Origin: *"); header("Content-Type: application/json"); // 打包变量为JSON输出 echo json_encode([ 'variable1' => $variable1, 'variable2' => $variable2, 'variable3' => $variable3 ]);
目标站点site.php调用方式
用PHP请求接口并解析JSON:
// 请求接口获取数据 $jsonData = file_get_contents('https://domain1.com/script1.php'); // 解析为PHP数组 $variables = json_decode($jsonData, true); // 提取变量使用 $variable1 = $variables['variable1']; $variable2 = $variables['variable2']; $variable3 = $variables['variable3']; // 输出结果 echo $variable1 . $variable2 . $variable3;
如果file_get_contents被服务器禁用,改用curl:
$ch = curl_init('https://domain1.com/script1.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $jsonData = curl_exec($ch); curl_close($ch); $variables = json_decode($jsonData, true); // 后续变量提取和输出同上
方案2:PHP跨域include(需服务器配置支持)
如果所有站点服务器允许,且allow_url_include配置开启,可直接远程引入脚本,但风险较高(脚本被篡改会影响所有站点)。
前置配置检查
确保domain1.com的php.ini中allow_url_fopen = On,目标站点的php.ini中allow_url_include = On(默认多为关闭状态,需修改配置)。
目标站点site.php调用方式
// 直接引入远程脚本 include 'https://domain1.com/script1.php'; // 直接使用变量 echo $variable1 . $variable2 . $variable3;
方案3:JavaScript前端加载
若仅需前端展示变量,可通过JS请求接口后渲染:
改造domain1.com/script1.php(同方案1的JSON接口)
同上,输出带跨域头的JSON数据。
目标站点site.php添加JS代码
<!-- 在site.php的HTML中插入这段代码 --> <script> fetch('https://domain1.com/script1.php') .then(response => response.json()) .then(data => { // 拼接变量并插入页面 document.write(data.variable1 + data.variable2 + data.variable3); // 也可插入到指定元素:document.getElementById('target').textContent = data.variable1 + ... }); </script>
向开发者提出的需求(若自行实现有困难)
- 将
domain1.com/script1.php改造为返回JSON格式的跨域接口,允许指定域名(或所有域名)访问 - 为目标站点的
site.php添加调用该JSON接口并解析变量的代码 - 若采用跨域include方案,协助开启目标站点服务器的
allow_url_include配置,并确认安全风险
内容的提问来源于stack exchange,提问作者Cark Blen
相关产品推荐
相关产品推荐

