Я генерирую * .csv файл с PHP, и он прекрасно работает.Проблема в том, что он содержит кучу конфиденциальных данных.Я сделал свои разрешения очень тщательно, поэтому вы не можете получить доступ к ссылке для скачивания или создать файл, не будучи правильным пользователем.Проблема, с которой я сталкиваюсь, заключается в том, что сразу после того, как пользователь загрузит файл, файл должен быть удален сразу же.Вероятность мала, я понимаю, что кто-то будет сидеть там, сканируя структуру моего сайта, но данные достаточно важны для того места, где я хочу прикрыть свою задницу:*
<a href="<?php echo base_path().$ourFileName ?>"><?=$ourFileName?></a>
Это прекрасно работает, просто загружая файл, но мне было трудно выполнять какие-либо действия с ним, потому что если вы вложите PHP-код в OnClick = "", он будет выполнен до щелчкапроисходит, потому что весь код PHP отображается на стороне сервера до обработки HTML и JAVASCRIPT ... верно?Я искал в интернете, и я не мог заставить javascript иметь разрешения на удаление файла ... правда, я мог быть очень неправ.
Поэтому я превратил свою ссылку в форму:
<?PHP
if(isset($_POST['submit']))
{
header("Location: ".base_path().$ourFileName);
unlink(base_path().$ourFileName);
}?>
<form action="<? $PHP_SELF ?>" method="post">
<input type="submit" value="Submit" name="submit">
</form>
Но очевидно, что unlink () никогда не будет доступна из-за заголовка ... по крайней мере, я думаю ... Есть ли другой способ, кроме header (), загрузить файл в них?Я понимаю, что могу просто запускать задание cron каждую минуту или что-то в этом роде:
rm -rf *.csv
И это решит проблему, но что произойдет, если пользователь загружает файл и cron?начинает бежать?Или страница сгенерирована, но по какой-то причине они некоторое время не нажимают на ссылку?
Может быть, есть какой-то способ настроить мой файл .htaccess, чтобы вы могли получить доступ к файлу только при ссылке со страницы?
Я слишком усложняю это?
Есть ли у вас какие-нибудь гуру идей в сети?
- edit По популярному предложению я работаю над новым форматом заголовка, поэтомукод выглядит так:
<?PHP if(isset($_POST['submit']) && ($user->uid))
{
myroom_render_csv($ourFileName, $csv_string);
}?>
<form action="<? $PHP_SELF ?>" method="post">
<input type="submit" value="Submit" name="submit">
</form>
и в отдельном файле:
<?PHP function myroom_render_csv($file_name, $csv_string) {
header('Content-type: text/csv');
$header_string2="Content-Disposition: attachment; filename=\"".$file_name."\"";
header($header_string2);
echo $csv_string;
} ?>
, но я получаю дамп полной HTML-страницы И данные CSV.Идеи?