0

在 B 服务器 .php 文件中包含 A 服务器 .php 文件并从 A 服务器 Php 文件中获取变量值

我正在尝试调用位于与 RPG(报告程序生成器,AS400)连接的另一台服务器中的 PHP 文件。我想从我的 Web 服务器调用该 PHP 文件,并希望能够访问变量和函数。

我试过包括但不工作

我想用参数调用 RPG 端的 .PHP 文件。

一个.php

 <?php

  include("http://10.1.1.12/a/file.php?email=aaa@a.com&name=abc");

  echo $a; //values from file.php
  ?>

文件.php

<?php
 $email = $_REQUEST['email'];
 $name = $_REQUEST['name'];
 $a = "testing";
 echo $a;
 ?>
4

2 回答 2

1

如果您可以控制两台服务器上的 php 应用程序,则建议在 B 上构建一个 php 接口。这很简单。一个基本的实现是:

A:

<?php
    $a = file_get_contents("http://10.1.1.12/a/interface.php?email=aaa@a.com&name=abc");
    $a = unserialize($a);
    print_r($a);
?>

B 上的 interface.php:

<?php
    $email = $_REQUEST['email'];
    $name = $_REQUEST['name'];

    $result = doSomething($email, $name); //return an array with your data
    $result = serialize($result);

    echo $result;
?>

当然这里没有验证,所以你需要添加对有效数据的检查。

我不确定您是否会遇到服务器之间的字符编码问题,并且您需要确保在 B 上编写正确的标头。

此外,请注意同一网络上的任何人都可以使用该接口。确保您实施了一些安全检查。

如果您需要发送的请求参数数据多于 url 所允许的数据(我认为是 1024 个字符?),这可能会有所帮助:如何使用 PHP 发送 POST 请求?

于 2014-05-01T22:19:35.903 回答
0

出于安全原因,在 php.ini 中默认禁用获取另一台服务器的响应include,很可能您将无法使用它。改为使用file_get_contents

在您file.php中,您可以使用您的数据做出 json 响应并回显它:

<?php
$email = $_REQUEST['email'];
$name = $_REQUEST['name'];
$a = "testing";

header('Content-type: application/json');
echo json_encode(
    'email' => $email,
    'name' => $name,
    'a' => $a
);
?>

A.php你需要解析 json 字符串来获取你的数据:

<?php
$data = json_decode(file_get_contents('http://10.1.1.12/a/file.php?email=aaa@a.com&name=abc'));
echo $data['email'], ' ', $data['name'], ' ', $data['a'];
?>
于 2014-05-01T21:28:08.923 回答