Heim >Backend-Entwicklung >PHP-Tutorial >用iframe指到非htdocs文件夹以外的文件

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

WBOY
WBOYOriginal
2016-06-23 14:28:12951Durchsuche

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);
?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn