微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用php从另一台主机服务器检索http页面并检测重定向

假设我在www.myhost.com上有一台服务器.从那里通过使用PHP我想要检索PHP文件www.anotherhost.com/somefile.PHP生成的html文档.我也想用PHP来做这件事. anotherhost与myhost不在同一台服务器上.

我知道诸如fopen,f_get_contents和file之类的函数可以通过简单地执行例如fopen,f_get_contents和file来实现.

$fp = fopen ("http://www.anotherhost.com/somefile.PHP")

从那里fp可以用作任何其他文件指针来读取内容.

但是,出于某种原因,我还想知道当我试图检索somefile.PHP生成的html文档时,anotherhost上的somefile.PHP是否订购了客户端重定向. somefile.PHP可以做到这一点

header ("Location: http://www.anotherhost.com/extrafile.PHP")

现在fopen将检索extrafile.PHP生成的html文档,而不检测是否已执行客户端重定向.

PHP中是否有一些功能可以让您从其他服务器检索html文档,并在重定向发生时通知您?如果我必须自己遵循重定向(不是自动完成),只要我被告知新URL是什么,这是可以接受的.

使用功能系统执行任意命令不是首选.

PS.如果你打算建议fsockopen,那么请解释为什么我收到错误“无法找到套接字传输”http“ – 你在配置PHP时忘了启用它吗?”当我尝试执行时

fsockopen ("http://localhost")

当我这样做时,我也得到“无法解析地址”localhost“

fsockopen ("localhost")

谢谢阅读.非常感谢帮助.

解决方法:

PHP 5.2开始,您可以使用流api和stream_notification_callback

例如

function notification($code, $severity, $message, $mcode, $transferred, $max) {
  if ( STREAM_NOTIFY_REDIRECTED===$code ) {
    echo 'redirected to ', $message, "\n";
  }
}
$ctx = stream_context_create(null, array('notification' => 'notification'));
$c = file_get_contents("http://spiegel.de", false, $ctx);
echo 'len=', strlen($c);

版画

redirected to http://www.spiegel.de/
len=144446

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐