Php 如何阻止对文件夹中所有文件的直接URL访问,但仍允许用户下载?
我有一个名为uploads的文件夹,有我想阻止直接下载的文件我在stackoverflow中读到了一个使用过的链接,但它不起作用,只是下载了一个坏文件 这是我的密码 .htaccess文件Php 如何阻止对文件夹中所有文件的直接URL访问,但仍允许用户下载?,php,html,Php,Html,我有一个名为uploads的文件夹,有我想阻止直接下载的文件我在stackoverflow中读到了一个使用过的链接,但它不起作用,只是下载了一个坏文件 这是我的密码 .htaccess文件 Order Deny,Allow Deny from all php文件 <?php if( !empty( $_REQUEST['name'] )&& !empty( $_REQUEST['user'] ) && !empty( $_RE
Order Deny,Allow
Deny from all
php文件
<?php
if( !empty( $_REQUEST['name'] )&& !empty( $_REQUEST['user'] ) && !empty( $_REQUEST['pass'] ) )
{
include 'include/DbHandler.php';
$db = new DbHandler();
$user= $_REQUEST['user'];
$pass= $_REQUEST['pass'];
$file_name= $_REQUEST['name'];
// file name like this : hps.jpg
$nest = $db->checkuserpass($user,$pass,$file_name);
if ($nest!=2)
{
/// user have premision for download
function getExtension($file){
preg_match('/\.[^\.]+$/i', $file, $ext);
return $ext[0];
}
//File type
$file_type = getExtension($file_name);
header('Content-Description: File Transfer');
//header('Content-Type: application/octet-stream');
header('Content-Type: '.$file_type);
header('Content-Disposition: attachment; filename='.$file_name);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: '.filesize("$file_name"));
ob_clean();
flush();
readfile("$file_name");
exit;
}
}
?>
您可以将文件保存在服务器公共端之外的文件夹中,即www目录之外,而不是拒绝.htaccess文件的访问 网站用户上传的上传文件夹中的所有文件,如果我将上传文件夹更改为www以外的用户,olso可以直接上传文件吗?是的,您可以直接上传文件。只需使用..访问此外部目录。。例如,如果此答案对您有帮助,请不要忘记单击此答案的绿色标志谢谢,但其他用户无法从www目录外直接下载