時如何加密的URL我有這樣的代碼:PHP jQuery的下載文件
$(li.AandCattachment.a download).click(function() {
$('#down').val($(this());
location.href('path/to/file?=' + $('#down').val());
}
,但我需要這樣,這將是固定的URL加密,它不能被其他用戶複製並看到所有通過複製文件的URL和逐個更改網址的文件..
你能幫助我嗎?
時如何加密的URL我有這樣的代碼:PHP jQuery的下載文件
$(li.AandCattachment.a download).click(function() {
$('#down').val($(this());
location.href('path/to/file?=' + $('#down').val());
}
,但我需要這樣,這將是固定的URL加密,它不能被其他用戶複製並看到所有通過複製文件的URL和逐個更改網址的文件..
你能幫助我嗎?
要實現不會只涉及客戶端代碼,但是服務器端代碼太什麼..
我可不是給你100%的解決方案,你將不得不做一些額外的工作(你會需要一種機制來驗證我自己可以不知道你是怎麼驗證的用戶)無法猜測的URL,但是這將指向你的方式:
做一個PHP文件來處理文件下載這樣
$crypted_url = $_GET["url_to_file_encripted_somehow"];
$file_path = get_file_path_from_crypted_url($crypted_url);
if ($file_path === false){
include "403.html";
die;
}
$filename = "whatever";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=$filename.".pathinfo($file_path, PATHINFO_EXTENSION));
echo readfile($documento->link_archivo());
如果你解釋機制,我可能會有更多的幫助您想使用sm來驗證用戶。
您可以將這些文件放在webroot之外,這樣它們就不能直接使用,然後通過php提供。在這個例子中,我使用的關聯數組映射「隨機」字符串的實際文件,使文件名不能簡單地猜測:
//download.php
$pathmap=[
'hkd654gk'=>'../file1.jpg',
'k735hs87'=>'../file2.jpg',
'qwcv13v5'=>'../file3.jpg',
];
$securepath = isset($_GET['path'])?$_GET['path']:'';
if(!isset($pathmap[$securepath]))
die('file not found');
header('Content-Type: image/jpeg');
readfile($pathmap[$securepath]);
要訪問文件1,網址是:
example.com/download.php?path=hkd654gk