Как создать файл для загрузки, который будет удален из базы после загрузки

Как я могу удалить файл от пользователя, если файл был успешно загружен? У меня есть здесь функция загрузки, но я не знаю, как сделать одноразовую загрузку.

HTML коды с PHP:

<?php
$result=mysql_query("SELECT * FROM school_management");
while($row=mysql_fetch_array($result))
{
?>
<div class="col-xs-6 col-md-3" style="padding-bottom: 10px;">
<div class="thumbnail">
<img src="https://web-answers.ru/wp-content/uploads/2019/03/ebooks/<?php echo $row['PICTURE'];?>" alt="...">
</div>
<p><center><a href="files/file.php?file=<?php echo $row['FILE_NAME'];?>" class="btn btn-xs btn-inverse" role="button" style="background-color: #2980b9;">Download</a></center></p>
</div>
<?php
}
?>

file.php

<?php

include('config.php');

$file=$_GET['file'];
echo $file;
header("Content-disposition: attachment; filename=$file");
header("Content-type: application/pdf");
header('Content-Description: File Transfer');
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
readfile("$file");

?>

Мой файл file.php может загружать файл только с буквами в заголовке, но если в заголовке файла есть символы или цифры, я не могу загрузить файл. Поэтому я изменил все названия в формате pdf, чтобы иметь возможность скачать его. Любые предложения по корректной загрузке файла file.php, и если пользователь успешно загрузит файл, файл будет удален из базы данных пользователя.

Имя базы данных: caledte1_ebook

Название таблицы: school_management

Столбцы таблицы: ID_NUMBER, EBOOK_FILENAME, PICTURE

0

Решение

Просто сделайте вызов базы данных в file.php. Вы, вероятно, также хотите проверить, что файл существует до его доставки.

$filename = mysql_real_escape_string($_GET['file']);
$result = mysql_query("SELECT id_number FROM school_management WHERE ebook_filename = '$filename'");
if(mysql_num_rows($result) == 0) {
// Perform error handling
}
mysql_query("DELETE FROM school_management WHERE ebook_filename = '$filename'");
0

Другие решения

Новый файл PHP / HTML:

<?php

$dbhost = ""; //Enter db host here
$dbuser = ""; //Enter db user here
$dbpass = ""; //Enter db pass here
$dbname = ""; //Enter db name here

$db = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

/* check connection */
if ($db->connect_errno) {
printf("Connect failed: %s\n", $db->connect_error);
exit();
}

$sql = "SELECT * FROM school_management";

if ($result = $db->query($sql)){
while ($row = $result->fetch_assoc()){ ?>
<div class="col-xs-6 col-md-3" style="padding-bottom: 10px;">
<div class="thumbnail">
<img src="https://web-answers.ru/wp-content/uploads/2019/03/ebooks/<?php echo $row['PICTURE'];?>" alt="...">
</div>
<p>
<center>
<a href="files/file.php?file=<?php echo $row['FILE_NAME']; ?>" class="btn btn-xs btn-inverse" role="button" style="background-color: #2980b9;">Download</a>
</center>
</p>
</div>
<? }

$result->free();

} else {
printf("Error: %s\n", $db->error);
}

$db->close();

?>

file.php:

<?php

$dbhost = ""; //Enter db host here
$dbuser = ""; //Enter db user here
$dbpass = ""; //Enter db pass here
$dbname = ""; //Enter db name here

$db = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

/* check connection */
if ($db->connect_errno) {
printf("Connect failed: %s\n", $db->connect_error);
exit();
}

$file = $_GET['file'];

if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);

$file = $db->real_escape_string($file);

$sql = "DELETE FROM school_management WHERE ebook_filename = '". $file ."'";

if ($succes = $db->query($sql)){
//Succesfull deleted code handle here
} else {
printf("Error: %s\n", $db->error);
}

$db->close();
}

?>

Конечно, вы можете взять из них соединительные части mysqli () и использовать для этого отдельный файл.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector