PHP Jquery下载文件时如何加密url

PHP Jquery下载文件时如何加密url,php,jquery,ajax,encryption,Php,Jquery,Ajax,Encryption,我有以下代码: $(li.AandCattachment.a download).click(function() { $('#down').val($(this()); location.href('path/to/file?=' + $('#down').val()); } 但是我需要对url进行加密,这样它将受到保护,并且不能被其他用户复制,并且通过复制文件的url并逐个更改url来查看所有文件 你能帮我吗?你想要实现的不仅仅是客户端代码,还有服务器端代码 我不是给你100%的解决方

我有以下代码:

$(li.AandCattachment.a download).click(function() {
$('#down').val($(this());

location.href('path/to/file?=' + $('#down').val());

}
但是我需要对url进行加密,这样它将受到保护,并且不能被其他用户复制,并且通过复制文件的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());

如果您解释一下要用于验证用户的机制,我可能会提供进一步的帮助。

您可以将文件放在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,url应为:

example.com/download.php?path=hkd654gk