鼠标放在文件链接上,左下角显示链接,点击下载之后,地址栏又出现链接,如何隐藏,目的就是阻止别人通过传播这个域名让没有付费过的人下载这个文件,懂的不多,希望能说得详细一些
出于防止钓鱼网站的考虑,现在的浏览器一般都不允许禁止状态栏。再说了,就算隐藏了,还是可以从下载页面中看到。
要防止没有经过授权的人下载你的文件很简单,没有必要隐藏地址。
只要你服务器动态判断用户身份,并且提供下载,而不是静态文件下载,那么没有权限的人拿到链接也没法下载。
例子代码
<?php
$down = $_GET['f']; //获取文件参数
$filename = $down.'.rar'; //获取文件名称
$dir ="down/"; //相对于网站根目录的下载目录路径
$down_host = $_SERVER['HTTP_HOST'].'/'; //当前域名
//
在这里判断用户是否有权限下载
if(!session('username'))
{
redirect(U(login.php')); //跳转到登录,而不是下载
}
else
{
//判断如果文件存在,则跳转到下载路径
if(file_exists(__DIR__.'/'.$dir.$filename)){
header('location:http://'.$down_host.$dir.$filename);
}else{
header('HTTP/1.1 404 Not Found');
}
}
要隐藏鼠标放在文件链接上,左下角显示的链接可以用:
<a href="假地址" onclick="location.href='真地址';return false;">xxxxx</a>
但点击下载之后,地址栏的出现链接是没办法隐藏的。
要阻止别人传播下载这个文件,你要做的不是隐藏文件地址,而是要控制文件下载的权限
https://blog.csdn.net/a389483637/article/details/78112998
header('location:http://'.$down_host.$dir.$filename);
这个替换成
header('Content-Disposition: attachment; filename=' + $filename);
header("Content-Type: application/archivement");
header('Content-Length: ' . filesize($filename));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile($filename);
其中filename是你实际要返回的文件,实际使用的时候,可以不暴露文件名
header('Content-Disposition: attachment; filename=' + $filename);
这里指定的文件名可以和你实际的不同
比如干脆写
header('Content-Disposition: attachment; filename=file.rar');
那么下载者肯定不知道实际的文件名是什么了。
你可以用 download.php?fileid=123
然后你服务器查表,根据123得到比如abc.rar,传给filename变量
客户端只看到123和file.rar,不知道它实际上在服务器上叫做abc.rar
这么写就不可能绕过去