4

好的,我想将 PHP 变量发送到另一台服务器,这是我的代码,php 变量是一个 IP 地址。

 header("Location: http://www.domainname.com/bean/data.php?ip=$ip");

基本上,另一台服务器将获取 IP 地址并返回一个名为 Description 的变量,我不清楚这是将 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";
    }
 }
4

5 回答 5

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:
}

使用标头('位置:xxx');函数,您实际上所做的是强制原始服务器上的 PHP 使用 302 重定向标头进行响应,该标头会将客户端发送到远程服务器,但没有从远程服务器“返回”到原始服务器。

于 2013-05-22T14:10:26.533 回答
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
于 2013-05-22T14:16:05.863 回答
1

该标头只会将用户重定向到该网站。file_get_contents()如果您的服务器配置允许远程文件访问,您想使用类似的东西。

如果没有,请查看cURL

您可以从 curl 的返回中获取内容并以这种方式处理它们。

于 2013-05-22T14:04:57.273 回答
0

好吧,如果我们假设 data.php 只返回您可以使用的描述

echo file_get_contents("http://www.domainname.com/bean/data.php?ip=".$ip);

它应该可以完成这项工作,但使用 CURL 是最好的选择。

于 2013-05-22T14:07:05.593 回答
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);
于 2013-05-22T14:14:37.580 回答