【发布时间】:2010-12-13 21:34:44
【问题描述】:
如何使用 opendir 函数读取知道其 IP 地址的远程服务器的目录列表?
【问题讨论】:
如何使用 opendir 函数读取知道其 IP 地址的远程服务器的目录列表?
【问题讨论】:
假设您尝试使用 HTTP 访问远程服务器,您将无法直接执行此操作。由于 HTTP 真的要访问远程服务器的 Web 服务,因此它控制文件呈现给您的方式。在许多 Web 服务器的情况下,您可以为文件夹内容打开“索引”。这会导致文件夹中的条目在浏览器中显示为 HTML。为了遍历目录结构,你需要解析这个 HTML 来找到路径信息。
如果您使用的是 FTP,则可以将 ftp://... URL 传递给 opendir()(从 5.0 版开始)。请注意,您的服务器管理员可以关闭此功能。如果您不能直接使用此功能,请参阅 PHP 的 FTP functions 手册(包括用于列出文件的 ftp_nlist())。
以上参考资料中的一个例子:
<?php
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// get contents of the current directory
$contents = ftp_nlist($conn_id, ".");
// output $contents
var_dump($contents);
?>
【讨论】:
对于公众可见的文件/文件夹,您可以使用以下脚本进行操作:No FTP,no strugglin。它会给你一个远程文件夹中的所有文件名。如果可以用浏览器打开该文件夹,也可以用php读取。快乐的吸血;)
更新:这仅列出可供公众使用的文件,当然不是仅对特定用户可见的文件!
function get_text($filename) {
$fp_load = fopen("$filename", "rb");
if ( $fp_load ) {
while ( !feof($fp_load) ) {
$content .= fgets($fp_load, 8192);
}
fclose($fp_load);
return $content;
}
}
$matches = array();
preg_match_all("/(a href\=\")([^\?\"]*)(\")/i", get_text('http://www.xxxxx.com/my/cool/remote/dir'), $matches);
foreach($matches[2] as $match) {
echo $match . '<br>';
}
【讨论】:
get_text?
假设您在服务器上为 php 加载了 ftp 扩展,您应该可以使用phps ftp functions
【讨论】: