Как настроить загрузочную аутентификацию? - PullRequest
2 голосов
/ 19 апреля 2010

Я ищу какую-то аутентификацию при загрузке. Я собираюсь дать пользователю ссылку на файл, и я хочу убедиться, что только этот человек получит его только один раз. Есть ли простое решение без настройки базы данных?

Еще лучше: если возможно иметь зашифрованную веб-ссылку, которая позволит вам загрузить файл с моего FTP-сервера только один раз, после этого ссылка станет недействительной.

1 Ответ

2 голосов
/ 19 апреля 2010

Вы можете использовать простой скрипт php. Этот скрипт возвращает в GET-файл в браузере. После его исключения вы можете переименовать этот файл в произвольную строку. это только первый человек скачать этот файл. По вашей ссылке получится вот так. www.domain.tld / реж / script.php? Файл =. / USR / 123.tar.gz. Вы также можете зашифровать имя файла в base64, в этом варианте ваша ссылка www.domain.tld / dir / script.php? File = Li91c3IvMTIzLnRhci5neg ==

Скрипт без base64:

<?php
$file = $_GET['file'];

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    rename($file, "secret_new_filename");
    exit;
}
else
{
    echo 'File don\'t exist';
}
?>

И с base64:

<?php
$file = base64_decode($_GET['file']);

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    rename($file, "secret_new_filename");
    exit;
}
else
{
    echo 'File don\'t exist';
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...