Вот упрощенный пример. Пароль-пользователь указан в файле. Каталог для выгрузки файлов - там же.
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authentification required.';
exit;
} else {
// config!
$password='test';
$user='test';
$upload_dir=$_SERVER['DOCUMENT_ROOT'].'/tmp/';
//
if($_SERVER['PHP_AUTH_USER']!=$user ||$_SERVER['PHP_AUTH_USER']!=$password){
echo 'No user found, sorry.';
exit;
}
$filename=$_SERVER['QUERY_STRING'];
if(!is_readable($upload_dir.$filename)){
echo 'No file found, sorry.';
exit;
}
header('Content-type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="' . $filename . '"');
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($upload_dir.$filename));
readfile($upload_dir.$filename);
}
Использование
https://test:test@site/file.php?filetoupload.txt