假设我在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")
但是,出于某种原因,我还想知道当我试图检索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