диалоговое окно принудительной загрузки: установить конкретные действия на основе ввода пользователя?

Я настраиваю портал, на котором пользователи могут слушать, загружать или скачивать mp3-файлы, но опция загрузки становится доступной (еще не реализованной), когда пользователь предварительно загружает mp3-файл на сервер.

У меня есть поле (названное «descargas») в таблице mysql, которое отслеживает доступные загрузки, которые пользователь имеет после загрузки (увеличьте значение поля на 1) или загрузите mp3-файл (уменьшите значение поля на 1). Я также использую переменную сеанса ($ _SESSION [‘descargas’]), чтобы отслеживать доступные загрузки.

Часть загрузки в порядке, но у меня есть небольшая проблема с частью загрузки: мне нужно как-то сказать php, что если пользователь решит не загружать файл, когда появится диалоговое окно, то уменьшение на 1 не будет применено.

Я использую метод принудительной загрузки для php (но использую метод POST, в отличие от официального метода GET для исправления) с отдельным файлом загрузки, расположенным в том же каталоге, что и файлы mp3, и моя текущая проблема заключается в том, что доступные пользователю загрузки будут вычтены одним, даже если они решат не продолжать загрузку.

Другая проблема заключается в том, что даже когда доступные загрузки равны 0, пользователь все равно получает диалоговое окно сохранения и может загрузить любой файл после нажатия на его ссылку.

Вот файл для скачивания:

<?php

session_start();

if (!isset($_POST['file_name']) || empty($_POST['file_name'])) {

session_destroy();
exit();
}

if(isset($_POST['file_name'])) {

$file = basename($_POST['file_name']);
$size = filesize($file);

$user=$_SESSION['usuario'];
$conexion4=mysqli_connect('localhost','usuariomusica2','1MusicUser1','musica2');

$sentencia12=mysqli_query($conexion4, "update musica2.usuarios set descargas=descargas-1 where usuario='$user' and descargas > 0");
$sentencia13=mysqli_query($conexion4, "select * from musica2.usuarios where usuario='$user'");
$row=mysqli_fetch_array($sentencia13);
$_SESSION['descargas']=$row[5];

// Definir headers

header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
header('Content-Type: audio/mpeg3');
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . $size);

// Descargar archivo

readfile($file);
}

else {

die('El archivo no existe.');
}

?>

Любые идеи были бы хорошы. Если мне придется пойти по совершенно иному маршруту и ​​реализовать часть загрузки с помощью javascript и / или ajax, чтобы я мог решить свою проблему, я сделаю это.

P: SI также заметил, что при нажатии на теги для любой данной песни на главной странице, URL-адрес браузера никогда не меняется на «download.php», который является именем страницы php, которая обрабатывает загрузки, даже если страница посещается.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы [email protected]