好的我想将PHP变量发送到另一台服务器,这是我的代码,php变量是一个ip地址。
header("Location: http://www.domainname.com/bean/data.php?ip=$ip");
基本上,其他服务器将获取ip地址并返回一个名为Description的变量。我不清楚是将描述变量返回给服务器的最佳方法。
data.php页面上的代码
$ip =$_GET['ip'];
include("ipology.class.php");
$ipology = new ipology( array($ip) );
$out = $ipology->out();
foreach( $out as $ip ) {
if( is_array( $ip ) ) {
$address = implode( ", ", (array) $ip['address'] );
$descr = implode( ", ", (array) $ip['descr'] );
echo "$descr";
}
}
答案 0 :(得分:3)
原始服务器可以使用(如Phil Cross提到的)file_get_contents或curl:
$response = file_get_contents('http://www.domainname.com/bean/data.php?ip='.$ip);
print_r( $response );
远程服务器可以使用:
if ( isset( $_GET['ip'] ) && $_GET['ip'] ) {
# do description lookup and 'echo' it out:
}
使用标题('location:xxx');函数,你实际上正在做的是强制原始服务器上的PHP响应302重定向头,它将客户端发送到远程服务器,但是没有从远程服务器“返回”到原始服务器。
答案 1 :(得分:1)
该标题只会将用户重定向到该网站。如果您的服务器配置允许远程文件访问,您希望使用类似file_get_contents()
的内容。
如果没有,请查看cURL
你可以从curl的返回中获取内容并以这种方式处理它们。
答案 2 :(得分:1)
您可以使用两种方法:
如果目标页面的唯一输出是描述,则可以使用
$description = file_get_contents("http://target.page?ip=xxx.xxx.xxx.xxx");
如果没有,你可以像这样使用curl:
// Create Post Information
$vars = array(
'ip'=>'xxx.xxx.xxx.xxx',
'some_other_info'=>'xxx'
);
// urlencode the information if needed
$urlencoded = http_build_query($vars);
if( function_exists( "curl_init" )) {
$CR = curl_init();
curl_setopt($CR, CURLOPT_URL, 'http://distantpage');
curl_setopt($CR, CURLOPT_POST, 1);
curl_setopt($CR, CURLOPT_FAILONERROR, true);
curl_setopt($CR, CURLOPT_POSTFIELDS, $urlencoded );
curl_setopt($CR, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($CR, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($CR, CURLOPT_FAILONERROR,true);
$result = curl_exec( $CR );
$error = curl_error ( $CR );
// if there's error
if( !empty( $error )) {
echo $error;
return;
}
curl_close( $CR );
}
parse_str($result, $output);
echo $output['description']; // get description
答案 3 :(得分:0)
如果我们假设data.php只返回您可以使用的描述
echo file_get_contents("http://www.domainname.com/bean/data.php?ip=".$ip);
它应该完成这项工作,但使用CURL是最好的选择。
答案 4 :(得分:0)
此代码段使用JSON返回值,如果您的需求扩展,这将允许您将来返回多个值。
我通常使用XML代替JSON,但似乎它已经过时了:-P
请告诉我这是否适合您。
<?php
$output = file_get_contents("http://www.domainname.com/bean/data.php?ip=$ip");
// This is what would go in data.php
$output = '{ "ip": "127.0.0.1", "description": "localhost" }';
$parsed = json_decode($output);
echo "Description for $parsed->ip is $parsed->description\n";
// var_dump($parsed);