欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

用iframe指到非htdocs文件夹以外的文件

程序员文章站 2022-06-05 16:49:46
...
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是有登入保护的。

回复讨论(解决方案)

不在 web 服务器管理范围的文件,就不能用 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))
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 ?>



File Listing














File Listing

Sign Out





















$dirs=@opendir($dir);

$count = 0;

while($file=@readdir($dirs)) {

$b="$dir/$file";

$a=@is_dir($b);

if($a=="1"){

if($file!=".."&&$file!=".") {

if($count
$count ++;

echo "\n";

echo "\n";

echo "\n";

}

echo "\n";

echo "\n";

echo "\n";

}

}

}

@closedir($dirs);

?>


$predir = realpath($dir . "/../");

if($predir > $basedir) $predir = str_replace($basedir . "/","",$predir);

if($predir == $basedir) $predir = ".";

if($dir > $basedir) echo "Up Level";

?>

Folder
$basedir ? str_replace($basedir . "/",'',$dir . "/") : '') . urlencode($file)."\">$file




















$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 "\n";

echo "\n";

echo "\n";

echo "\n";

echo "\n";

}

}

@closedir($dirs);

?>

Filename Date Size Action
$file$lastsave$size KB $basedir ? str_replace($basedir . "/",'',$dir . "/") : '').urlencode($file)."\">Download



已解决,用以下的代码即可。


$file_handle = fopen("outsidefile/file.txt", "r");

while (!feof($file_handle)) {

$line_of_text = fgets($file_handle);
print $line_of_text . "
";

}

fclose($file_handle);
?>