проверка сохранения файла php

336
26 мая 2017, 15:51

Найдена одна особенность в счетчике скачиваний файлов.

При нажатии кнопки "отмена" в диалоге сохранения файла счетчик все равно накручивается (чем тогда этот счетчик отличается от счетчика кликов по ссылке?).

Примерный код:

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();
}
READ ALSO
Как сделать поиск по бд городов?

Как сделать поиск по бд городов?

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

339
Нужно поменять цвет иконки

Нужно поменять цвет иконки

Как можно поменять цвет иконки средствами php?

228
Создать не стандартное меню для WordPress

Создать не стандартное меню для WordPress

Имеется такая структура меню:

319
jQuery serialize() проверка GET запроса

jQuery serialize() проверка GET запроса

Есть функция serialize() в jQuery, вопрос как провести проверку get запроса в php?

401