Найдена одна особенность в счетчике скачиваний файлов.
При нажатии кнопки "отмена" в диалоге сохранения файла счетчик все равно накручивается (чем тогда этот счетчик отличается от счетчика кликов по ссылке?).
Примерный код:
if (isset($_GET['file'])) {
$filename = $_GET['file'];
$conn = mysqli_connect("localhost", "root", "", "test");
if (!$conn) {
die("Connection failed: " . mysql_connect_error());
}
$select = "SELECT counter FROM test_counter WHERE name='$filename'";
$result = mysqli_query($conn, $select);
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
$counter = $row['counter'];
$counter += 1;
send_file();
$update = "UPDATE `test_counter` SET `counter`=$counter WHERE name='$filename'";
$result = mysqli_query($conn, $update);
}
else
$result = mysqli_query($conn, "INSERT INTO `test_counter`(`name`, `counter`) VALUES ('$filename', 1)");
mysqli_close($conn);
}
function send_file() {
$file = __DIR__.'\\download.php';
header('X-SendFile: ' . realpath($file));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
}
Собственно вопрос в том, можно ли как-то проверить, что пользователь действительно сохранил файл (а не нажал "отмена"), сделав что-то вроде (ну или каким-то другим способом):
$dialog = send_headers();
if ($dialog->get_result() == OKAY) {
update_counter();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть БД всех городов мира, нужно сделать автоподсказку при вводе, проблема в том что в БД более миллиона записей и обычный LIKE заставляет бедную...
Есть функция serialize() в jQuery, вопрос как провести проверку get запроса в php?