用iframe指到非htdocs檔案夾以外的檔案

來源:互聯網
上載者:User
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














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 < 1){ $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);
?>

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.