А подскажите как это сделать?
Спасибо за предложное вами решение, но меня более чем устраивает то, что сделал silicoid. Я на такие возможности даже и не надеялся. Плюсы этого способа очевидны. Во-первых, это настраиваемый диапазон кол-во скачиваний, значение которого будет видеть пользователь впервые попавший на страницу скачивания. Во-вторых, это его увлечение при последующих посещениях. Что будет выглядеть вполне естественным. И кол-во, на которое нужно увеличивать скачивания за сутки, также можно под себя настроить. А ограниченный размер куков (в 64 файла) не такой уж и минус, по крайней мере для меня.
А на сколько примерно страниц их может хватить? В любом случае я думаю это не страшно. Ведь пользователь вряд ли целенаправленно что-либо будет запоминать, и после нескольких просмотренных страниц, он уже и не вспомнить, сколько скачиваний было на первой. А вот если он зашел из-за одного файла и при простом обновлении страницы или повторном запуске браузера (через короткий промежуток времени) увидел меньшее значение (или значительно большее), то это кончено вызовет у него сомнение. Но этот вопрос уже помог решить silicoid, так что все отлично. Все уже функционирует, и завтра можно будет делать выводы об изменении конверсии.
Написал в лс.
// местонахождение сервера // можно не указывать, если в настройках сервера это есть date_default_timezone_set ('Europe/Moscow'); $reqiest_url = parse_url($_SERVER['REQUEST_URI']); /*добавлено */ $path = base64_encode($reqiest_url['path']); /* добавлено*/ if (empty($_COOKIE["dCount".$path])) /*изменено */ {
$dCount = unserialize(base64_decode($_COOKIE["dCount".$path]));
document.cookie = "dCount<?php print $path; ?>=<?php print $cookie; ?>; expires=<?php print $expires; ?>";
К сожалению, теперь при каждом обновлении страницы генерируется новое значение кол-во скачиваний.
Вот если нужно, этот php файл https://yadi.sk/d/EHl7f0cAprQHv
Может можно привязывать кол-во скачиваний к какому-нибудь уникальному значению в этом файле вывода страницы скачивания.
Разобрался. Все отлично работает! Еще раз огромнейшее вам спасибо за помощь :)---------- Добавлено 02.03.2016 в 18:17 ----------
Обнаружил один неприятный момент. Оказывается это фейковое значение генерируется одно на все файлы. Видимо из-за того что в движке за вывод странцы скачивания файла отвечает один файл files.blade.php в который и помещается весь ваш код. И это несмотря на то что у каждого файла свой url страницы скачивания. То есть пользователь загрузив страницу скачивания любого из загруженных мною на сайт файла, всегда увидит одно и тоже значение (конечно с учетом приплюсованных за время скачиваний). Можно ли как-то сделать так, что бы пользователю в куки записывались значения для каждого url'а отдельно? Для того чтобы у каждого файла он видел разное кол-во скачиваний, а не одно на всех.
<!-- begin smart counter --> <?php // местонахождение сервера // можно не указывать, если в настройках сервера это есть date_default_timezone_set ('Europe/Moscow'); if (empty($_COOKIE["dCount"])) { // если это новопользователь // генерим куку с рандомным значением от 200 до 1000 и сохраням у пользователья // чтобы небыло такого, что при каждом релоаде новое значение $dCount = array( 'downloads' => ceil(rand(200,1000)), // кука 'time' => time() // дата создания ); $cookie = base64_encode(serialize($dCount)); $expires = date("m/d/Y H:i", strtotime('+365 days') ); // время жизни куки в днях } else { // кука есть, то значит человек заходил в течении месяца // показываем ему другое рандомное значение, которое больше предыдущего // генерим новую куку с учетом кол-ва времени, который пользователь отсутствовал $max_dpd = 86400; //максимальное кол-во скачиваний в день 86400 = макс 1 скачивание в секунду, но кмк надо ставить реальную цифру, например 96 $dCount = unserialize(base64_decode($_COOKIE["dCount"])); $dayLeft = (time() - $dCount['time'])/(60*60*24); // кол-во дней прошедших с момента последней "загрузки" $downloads = $dCount['downloads']; // сохраненное кол-во "загрузок". $delta = $dayLeft * $max_dpd; // максимальное число, на которое может увеличиться счетчик $dCount = array( 'downloads' => ceil(rand($downloads,$downloads + $delta)), // кука 'time' => time() // дата обновления ); $cookie = base64_encode(serialize($dCount)); $expires = date("m/d/Y H:i", strtotime('+365 days') ); // время жизни куки в днях } print 'Скачиваний: '. $dCount['downloads']; ?> <!-- так как мы не можем использовать php функцию setcookie, т.к она должна вызываться до начала вывода данных в браузер, то задействуем вот такой финт ушами --> <script type="text/javascript" > document.cookie = "dCount=<?php print $cookie; ?>; expires=<?php print $expires; ?>"; </script> <!-- //end smart counter -->
Ничего себе, спасибо вам огромное. Сейчас попробую использовать код. Мне только не совсем понятно как полученное число вывести в элемент списка <li>, вместо {{ $data['fileDownloadCounter'] }} вставить весь код? Подскажите, пожалуйста.
Я сам такое написать точно не смогу. Да и должен быть способ попроще. Возможно на php не так уж и сложно пишется генерация чисел в определенном диапазоне, хотя может я и ошибаюсь. Кто бы подсказал как это сделать.
Спасибо, но наверно не вариант опираться на реальные скачивания. Ведь после загрузки каждый файл не сразу набирает реальные скачивания. Кому как повезет) И соответственно у части файлов скачиваний 0. Да и мне бы генерацию значений в диапазоне от 100 до 500.