0

我的网站在公共网络服务器 A 上运行,该服务器在我的 Intranet 上看不到我的本地服务器 B。在我的浏览器中,如果我在办公室,我可以在浏览器的地址字段中访问我的 Intranet。我还可以在从我的 Web 服务器 A 构建的页面上显示位于本地服务器 B 中的图像。但是,如果我在服务器 A 上运行的 php 中使用 file_exists(服务器 B 上的文件),则它不起作用,因为 php 脚本正在运行在看不到服务器 B 的服务器 A 上。

我需要检测浏览器是否可以访问服务器 B(在办公室或通过 vpn 建立隧道),以便我可以决定是显示/下载服务器 B 上的本地文件还是 Web 服务器 A 上的文件。我该怎么做?

我还需要该函数来查看是否可以调用我的星号服务器以在我的 pabx 上进行调用。

4

2 回答 2

1

如果我理解你是正确的,这个http://php.net/manual/en/function.get-headers.php可能会有所帮助。您可以“ping”远程服务器上的任何文件,检查返回的标头,如果返回的代码是 200 - 服务器是可访问的。

于 2012-09-20T16:10:16.910 回答
0

当您访问服务器 A 时,脚本可以评估您的地址(您的办公室地址)并知道它位于一组可以显示来自服务器 B 的图像的地址中。如果您从办公室外部访问服务器 A,那么脚本可以设置为不显示来自 B 的图像。

您可以在

while(list($key, $val) = each($_SERVER))
{
    $$key = $val;
    printf("%s = %s  \n",$key, $val);
}

当然,建议的解决方案是查看上面的 HTTP 标头并评估是否

[0] => HTTP/1.1 200 OK

尝试访问服务器 B 时是否存在也可以解决问题,但是您需要对您可能已经从 IP 知道的服务器进行失败的访问将失败。

承认,这是一个“硬编码”场景,因为您需要了解服务器 A 上的 IP 是正确的 - 这可能会改变。在这种情况下,客户端中的 javascript 解决方案可能会更加流畅。

于 2012-09-20T16:31:02.620 回答