我目前使用PHP制作了一个下载按钮,但是当你将鼠标放在链接上时,你可以看到要下载的文件的路径,这是不安全的,因为你可以更改路径并下载其他人的文件。
我想有这个路径隐藏,我相信做这个按钮的最好方法是使用jQuery(纠正我,如果我错了)。
这是我所做的:
<?php
$nombredir = str_pad($this->item->id, 10, "0", STR_PAD_LEFT);
$path = 'media'.DS.'com_cspartners'.DS.'documentation';
$path = str_replace('/administrator','',$path);
$nombrePDF = "/".$nombredir.'_'.JText::_('COM_CSPARTNERS_NOMBRE_DOCUMENTATION_CONTRACT');
$facturaFile=$path.DS.$nombredir;
$pdfAdjunto = $facturaFile.$nombrePDF; //This is path and file name which appears in the link.
?>
这是我的下载按钮/链接:
<a href="<?php echo $pdfAdjunto; ?>" class="btn btn-primary" id="jform_download_documentation" name="jform[download_documentation]"><?php echo JText::_("COM_CSPARTNERS_DOWNLOAD_DOCUMENTATION_BUTTON"); ?></a>
试试这个:绑定click事件锚标记并将href
链接更改为href="#"
锚-
<a href="#" class="btn btn-primary"
id="jform_download_documentation"
name="jform[download_documentation]">
<?php echo JText::_("COM_CSPARTNERS_DOWNLOAD_DOCUMENTATION_BUTTON"); ?>
</a>
并创建一个值等于link
的隐藏输入<input type="hidden"
id="jform_download_documentation_hidden"
value="<?php echo $pdfAdjunto; ?>">
jQuery: on click event of button submit url
$(function(){
$('#jform_download_documentation').click(function(e){
e.preventDefault();
window.location.href = $('#jform_download_documentation_hidden').val();
});
});
也许你应该使用另一个php脚本,例如
<?php
// generate file path using database or find file using PHP
$path = '/some/path/';
// get file name from dabatase, or set it as a const or param
$filename= $_GET['filename']; // parase it for security
// combine path and filename
$filename = $path.$filename;
header("Content-disposition: attachment;filename=$filename");
readfile($filename);
?>
保存为'download.php',然后当你创建下载按钮时,只传递一个参数。下载链接应该是这样的:download.php?Id =2323 (Id: 2323 in database -> 'some_document.doc')
或
download/some-2323-file -然后解析参数,得到ID,瞧!)没有人看到文件路径:)