Как посчитать количество скачиваний пользователей - PullRequest
1 голос
/ 16 января 2012

Этот код для извлечения файлов dir и title. Пользователь скачивает при нажатии на ссылку файла. Мне нужно посчитать количество загрузок. Как это сделать с помощью CakePHP или PHP?

downloads_controller.php:

function index() {
    $this->set('downloads', $this->paginate());
}

загрузка / index.ctp:

<?php
    $title = $download['Download']['title']; 
    // output filetitle 
    $filename = '/files/'.$download['Download']['filename']; 
    // output http://localhost/tet/files/un5titled0.rar
    echo $this->Html->link($title, $filename,array('escape' => false)); 
?>

Ответы [ 4 ]

2 голосов
/ 16 января 2012

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

Вызовите следующую функцию изваше представление передает $filename и $id

. Чтобы попробовать в первый раз, используйте ID = 4 в качестве одного из идентификаторов загрузок в вашей БД

http://www.yourdomain.com/downloads/download/4

И затем вашконтроллер будет ...

Class DownloadsController extends AppController{
    // All your other functions here

    function download($id = null){

        $this->Article->updateAll(
            array('Download.count' => 'Download.count+1'),
            array('Download.id' => $id)
        );

        $download = $this->Download->findById($id);

        $this->set('filename', $download['Download']['filename']);

        //$filename is an array that can then be used in your view to pass the file for download. to find out what is has you can use debug($filename) in your view
        }
}

Затем вам нужно создать специальную раскладку, чтобы браузер знал, что файл запроса является загрузкой, и вам также нужно будет создать представление для download.ctp.В основном, когда вы нажимаете ссылку на файл на своей странице, он вызывает эту функцию, которая будет использовать его представление для обслуживания файла.

Вы можете получить доступ к следующему, который даст некоторое представление о том, что необходимо сделать ..

Учебное пособие

2 голосов
/ 16 января 2012

Боюсь, не так.

Вам нужно либо перенаправить из действия (которое считается до перенаправления), либо использовать представление «Медиа» для его прохождения. вот как я это делаю. В этом действии вы можете увеличить счет до отправки файла.

1 голос
/ 16 января 2012

Существует множество методов, хотя в простейшем случае для этого можно использовать текстовый файл.

Создайте текстовый файл и запишите в него 0 (ноль).

В вашей индексной функции прочитайте содержимое вашего файла.

$counter = file_read_contents('counter.txt');

Увеличьте значение чтения на 1.

$counter++;

Введите новое значение в файл еще раз.

file_put_contents('counter.txt', $counter);

Итак, он считает количество загрузок и хранит номер в этом файле.

0 голосов
/ 21 января 2012
function download($id = null) {
    $download = $this->Download->findById($id);
    $this->set(compact('download'));
    if(!empty($id)) {
        // increment the number of items downloads 
        $this->Download->save(array(
            'Download' => array(
                'id' => $id,
                'counts' => ($download['Download']['counts'] + 1)
            )
        ));
    }

    header('Location: http://localhost/tet/files/'.$download['Download']['filename']);
    exit();
}
...