我对我的问题进行了分析,我们假设我们有一个login
用户登录的地方,并被重定向到受会话保护的页面。受保护的页面可能类似于:
if (isset($_SESSION['usuario'])) {
if (!filter_var($_SESSION['usuario'] ?: '', FILTER_VALIDATE_INT) === false) {
$id_usuario = $_SESSION['usuario'] ?: '';
} else {
//Destruimos sesion.
session_destroy();
//Redirigimos a login.
header('location: tulogin.php');
exit();
}
} else { //Caso Falso, Redirigimos a login.
header('location: tulogin.php');
exit();
}
现在我的问题来了,有没有办法保护文件不被未登录或未注册的用户下载到受保护的页面上。
<a href="http://descargar.php/archivo_winrar.rar">Descargar</a>
因为如果有人获得了我们网站的地址,他们URL
可以在没有访问权限的情况下下载所述内容。一个带有解释的实际例子会很有趣,在此先感谢。
如果不是直接链接文件,而是链接到以文件标识符作为参数的下载页面,则可以解决此问题。
在该下载页面上,您可以遵循如下算法:
header
要返回的文件类型的值用户会有文件被下载的印象,但如果他与未注册和登录的用户共享链接,它将不起作用。
以适当的权限保存文件,以便没有人可以直接访问它。
验证用户注册后,即可下载文件。
来源:允许登录用户下载文件
我要做的是将文件放在带有“加密名称”的文件夹中,并在每次下载时更改它,将“加密名称”保存在我的表中,就是这样。
例如。我将文件放在名为“a574930fg09”的文件夹中,并将该名称保存在表中。当启用的用户想要下载它时,他访问链接“/a574930fg09/superarchive.png”。
该链接可以每天或每 10 分钟更改一次……或随时更改!只有系统知道链接。如果有人想分享那个链接,它只会用于“更新时间”,这通常不是很有用。