在不同服务器上的两个文件之间切换php变量

时间:2013-12-15 21:49:31

标签: php

好的,所以我在服务器#1上有a.php,在服务器#2上有b.php

让我们说a.php包含:

<?php
$google = 'www.google.com';
?>

和b.php包含:

<?php
require('http://[server #1]/a.php');
echo $google;
?>

基本上不起作用,如何使其工作而不编辑php.ini ? :d

2 个答案:

答案 0 :(得分:1)

您根本无法访问其他服务器上的远程php文件的源代码。最好的方法是创建一种API类型的东西(设置一个特殊的键):

$secretkey = "stackoverflow";
if(isset($_GET['secretkey']) && $_GET['secretkey'] == $secretkey){
$google = "www.google.com";
//Either if a specific string is requested, then reveal that:
if(isset($_GET['req'])){
$request = $_GET['req'];
//reveal the value of string Google
if($request == "google"){
echo $google;
}
}else{
//Or reveal the whole source code if there is no specific request
show_source(__file__);
}
}else{
die("Access denied.");
}

答案 1 :(得分:1)

使用JSON,读取全局变量并将它们导出为JSON字符串,然后在reciving端使用extract()将变量恢复到全局范围。

服务器A上的

config.php

// Define your Variables
$google = 'www.google.com';
$string = 'foobar';
$int = 1;
$bool = true;

// JSON Export
echo json_encode(array_diff_key(get_defined_vars(),array_flip(array('_GET','_POST','_COOKIE','_FILES','_ENV','_REQUEST','_SERVER'))));
服务器B上的

application.php

// JSON Import
extract(json_decode(file_get_contents('http://www.domain.com/config.php'),true));

// Now test your Variables
var_dump($google); // Now the $google variable exists
var_dump($string);
var_dump($int);
var_dump($bool);

您可以在此代码中创建自己的安全机制以满足您的要求。我更倾向于在发送端和接收端使用特定的变量列表,这种使用get_defined_vars()和extract()的方法并不理想,但是因为你的目标是一个你控制的特定URL你的风险降到最低。