PHP
想用iframe指到非htdocs檔案夾以外的檔案,因為該檔案是file.txt,如果直接放到htdocs之下,就保護不了,因為不需要登入也可以開啟file.txt。如果把file.txt放到d:\txt\file.txt,在http://mydomain.com/file.txt是找不到的。用http://mydomain.com/file.php來呼叫file.txt,因為file.php是有登入保護的。
回複討論(解決方案)
不在 網頁伺服器管理範圍的檔案,就不能用 http 協議訪問
你需要通過 php 程式中轉
哪到底該如何做呢? 我的filelist頁碼是可以指到任何檔案夾的。是否可以修改成嵌入檔案開啟呢? 頁碼如下:
error_reporting(0);
$basedir = "c:/filelist";
if(!is_dir($basedir)) $basedir = dirname(__FILE__);
$file_name = $_GET['downfile'];
if(!empty($file_name)){
$file_dir = $basedir . "/" . $file_name;
if(dirname(realpath($file_dir)) < $basedir){
echo "Permission Denied!";
exit;
}
if (!file_exists($file_dir)) {
echo "File Not Found!";
exit;
} else {
$file = fopen($file_dir,"r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir));
Header("Content-Disposition: attachment; filename=" . $file_name);
echo fread($file,filesize($file_dir));
fclose($file);
exit;
}
}
header("Content-type: text/html; charset=utf-8");
$requestDir = $_GET['dir'];
if(empty($requestDir)){
$dir = $basedir;
}else{
$dir = $basedir . "/" . $requestDir;
}
$dir = realpath($dir);
if($dir < $basedir) $dir = $basedir;
?>
File Listing
$predir = realpath($dir . "/../"); if($predir > $basedir) $predir = str_replace($basedir . "/","",$predir); if($predir == $basedir) $predir = "."; if($dir > $basedir) echo "Up Level"; ?> |
$dirs=@opendir($dir); $count = 0; while($file=@readdir($dirs)) { $b="$dir/$file"; $a=@is_dir($b); if($a=="1"){ if($file!=".."&&$file!=".") { if($count < 1){ $count ++; echo "
\n"; echo "
| Folder | \n"; echo "
\n"; } echo "
\n"; echo "
| $basedir ? str_replace($basedir . "/",'',$dir . "/") : '') . urlencode($file)."\">$file | \n"; echo "
\n"; } } } @closedir($dirs); ?>
| Filename |
Date |
Size |
Action |
$dirs=@opendir($dir); while ($file=@readdir($dirs)) { $b="$dir/$file"; $a=@is_dir($b); if($a=="0"){ $size=@filesize("$dir/$file"); $size=$size/1024 ; $size= @number_format($size,2); $lastsave=@date("Y-n-d H:i:s",filemtime("$dir/$file")); echo "
\n"; echo "
| $file | \n"; echo "
$lastsave | \n"; echo "
$size KB | \n"; echo "
$basedir ? str_replace($basedir . "/",'',$dir . "/") : '').urlencode($file)."\">Download | \n"; echo "
\n"; } } @closedir($dirs); ?>
已解決,用以下的代碼即可。
$file_handle = fopen("outsidefile/file.txt", "r");
while (!feof($file_handle)) {
$line_of_text = fgets($file_handle);
print $line_of_text . "
";
}
fclose($file_handle);
?>