eklips007: Из ифрейма данные вы не получите - политика безопасности браузеров не даст этого сделать. Лучшее решение - с помощью CURL вытянуть тайтл и потом уже грузить сам фрейм
imagine: я вам предложил нормальное решение, которое реализуется за 15 минут, а вы зачем-то прикручиваете чужую граблю
Спасибо за предложное вами решение, но меня более чем устраивает то, что сделал silicoid. Я на такие возможности даже и не надеялся. Плюсы этого способа очевидны. Во-первых, это настраиваемый диапазон кол-во скачиваний, значение которого будет видеть пользователь впервые попавший на страницу скачивания. Во-вторых, это его увлечение при последующих посещениях. Что будет выглядеть вполне естественным. И кол-во, на которое нужно увеличивать скачивания за сутки, также можно под себя настроить. А ограниченный размер куков (в 64 файла) не такой уж и минус, по крайней мере для меня.
Дикий пионер: Не забывайте, что общий размер куков для сайта ограничен и еси пользователь будет много ходить по страницам - то размер куки будет расти и со временем старые данные потеряются
А на сколько примерно страниц их может хватить? В любом случае я думаю это не страшно. Ведь пользователь вряд ли целенаправленно что-либо будет запоминать, и после нескольких просмотренных страниц, он уже и не вспомнить, сколько скачиваний было на первой. А вот если он зашел из-за одного файла и при простом обновлении страницы или повторном запуске браузера (через короткий промежуток времени) увидел меньшее значение (или значительно большее), то это кончено вызовет у него сомнение. Но этот вопрос уже помог решить silicoid, так что все отлично. Все уже функционирует, и завтра можно будет делать выводы об изменении конверсии.
это при условии, что используется чпу. если используется для навигации стандартные гет запросы, то надо вместо $reqiest_url['path'] написать $reqiest_url['query']
тут правда кол-во кук будет пропорционально кол-ву открытых страниц, но зато должно выводиться как надо
К сожалению, теперь при каждом обновлении страницы генерируется новое значение кол-во скачиваний.
Разобрался. Все отлично работает! Еще раз огромнейшее вам спасибо за помощь :)
---------- Добавлено 02.03.2016 в 18:17 ----------
silicoid: хороший вопрос. Откровенно говоря даже не знаю.
надо спросить у тех, кто знаком с шаблонизатором.
возможно, если заменить <?php код ?> На {{ код }} то будет работать
Обнаружил один неприятный момент. Оказывается это фейковое значение генерируется одно на все файлы. Видимо из-за того что в движке за вывод странцы скачивания файла отвечает один файл files.blade.php в который и помещается весь ваш код. И это несмотря на то что у каждого файла свой url страницы скачивания. То есть пользователь загрузив страницу скачивания любого из загруженных мною на сайт файла, всегда увидит одно и тоже значение (конечно с учетом приплюсованных за время скачиваний). Можно ли как-то сделать так, что бы пользователю в куки записывались значения для каждого url'а отдельно? Для того чтобы у каждого файла он видел разное кол-во скачиваний, а не одно на всех.
silicoid: Вот такой вот хитрый счетчик вам написал генерит рандомное кол-во скачиваний но чтобы юзверь не прочухал записывает ему в куку кол-во скачиваний, а потом при каждом его заходе добавляет какое-то кол-во скачиваний еще.
кол-во скачиваний привязано к времеи отсутствия пользователя например если он отсутствовал два дня, а у вас стоит итератор 500 скачиваний в день, то кол-во "качек" может увеличиться на 0-1000 если 2 часа, то на 0-11
<!-- 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; // максимальное число, на которое может увеличиться счетчик
$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'] }} вставить весь код? Подскажите, пожалуйста.
imagine: Возьмите некоторую постоянную базу, например название файла ( скажем количество букв ), умножьте на некоторую постоянную и прибавьте сколько-то минут от времени его добавления.
Т.е. например файл: "Кинофильм Выживший", добавленный 20 февраля 2016
Будет:
Длина строки: 18
Некоторая константа: 50
Количество прошедших минут: 39600
Итого: 18 * 50 + 39600 = 40500
Будет увеличиваться во времени и стартанет не с нуля, и рандом не нужен.
Я сам такое написать точно не смогу. Да и должен быть способ попроще. Возможно на php не так уж и сложно пишется генерация чисел в определенном диапазоне, хотя может я и ошибаюсь. Кто бы подсказал как это сделать.
danforth: {{ round($data['fileDownloadCounter'] * 4.5167)}}
Умножайте на какое-то дробное число реальное количество скачиваний и потом округляйте. Если будете умножать на целое - будет не реалистично (всегда кратное).
Спасибо, но наверно не вариант опираться на реальные скачивания. Ведь после загрузки каждый файл не сразу набирает реальные скачивания. Кому как повезет) И соответственно у части файлов скачиваний 0. Да и мне бы генерацию значений в диапазоне от 100 до 500.
Из ифрейма данные вы не получите - политика безопасности браузеров не даст этого сделать. Лучшее решение - с помощью CURL вытянуть тайтл и потом уже грузить сам фрейм
А подскажите как это сделать?
я вам предложил нормальное решение, которое реализуется за 15 минут, а вы зачем-то прикручиваете чужую граблю
Спасибо за предложное вами решение, но меня более чем устраивает то, что сделал silicoid. Я на такие возможности даже и не надеялся. Плюсы этого способа очевидны. Во-первых, это настраиваемый диапазон кол-во скачиваний, значение которого будет видеть пользователь впервые попавший на страницу скачивания. Во-вторых, это его увлечение при последующих посещениях. Что будет выглядеть вполне естественным. И кол-во, на которое нужно увеличивать скачивания за сутки, также можно под себя настроить. А ограниченный размер куков (в 64 файла) не такой уж и минус, по крайней мере для меня.
Не забывайте, что общий размер куков для сайта ограничен и еси пользователь будет много ходить по страницам - то размер куки будет расти и со временем старые данные потеряются
А на сколько примерно страниц их может хватить? В любом случае я думаю это не страшно. Ведь пользователь вряд ли целенаправленно что-либо будет запоминать, и после нескольких просмотренных страниц, он уже и не вспомнить, сколько скачиваний было на первой. А вот если он зашел из-за одного файла и при простом обновлении страницы или повторном запуске браузера (через короткий промежуток времени) увидел меньшее значение (или значительно большее), то это кончено вызовет у него сомнение. Но этот вопрос уже помог решить silicoid, так что все отлично. Все уже функционирует, и завтра можно будет делать выводы об изменении конверсии.
widgin, а можно примеры юрлов?
А еще лучше постучите в лс. надо не живом сайте посмотреть
Написал в лс.
подрихтовал
изменения минимальны. Добавил привязку к урлу.
1 надо изменить вверху три строчки, где if
изменить строку получения данных
которая сразу под $max_dpd = 86400;
и внизу исправить строчку в явакскрипте
это при условии, что используется чпу. если используется для навигации стандартные гет запросы, то надо вместо $reqiest_url['path'] написать $reqiest_url['query']
тут правда кол-во кук будет пропорционально кол-ву открытых страниц, но зато должно выводиться как надо
К сожалению, теперь при каждом обновлении страницы генерируется новое значение кол-во скачиваний.
Вот если нужно, этот php файл https://yadi.sk/d/EHl7f0cAprQHv
Может можно привязывать кол-во скачиваний к какому-нибудь уникальному значению в этом файле вывода страницы скачивания.
Разобрался. Все отлично работает! Еще раз огромнейшее вам спасибо за помощь :)
---------- Добавлено 02.03.2016 в 18:17 ----------
хороший вопрос. Откровенно говоря даже не знаю.
надо спросить у тех, кто знаком с шаблонизатором.
возможно, если заменить <?php код ?> На {{ код }} то будет работать
Обнаружил один неприятный момент. Оказывается это фейковое значение генерируется одно на все файлы. Видимо из-за того что в движке за вывод странцы скачивания файла отвечает один файл files.blade.php в который и помещается весь ваш код. И это несмотря на то что у каждого файла свой url страницы скачивания. То есть пользователь загрузив страницу скачивания любого из загруженных мною на сайт файла, всегда увидит одно и тоже значение (конечно с учетом приплюсованных за время скачиваний). Можно ли как-то сделать так, что бы пользователю в куки записывались значения для каждого url'а отдельно? Для того чтобы у каждого файла он видел разное кол-во скачиваний, а не одно на всех.
Вот такой вот хитрый счетчик вам написал
генерит рандомное кол-во скачиваний
но чтобы юзверь не прочухал записывает ему в куку кол-во скачиваний, а потом при каждом его заходе добавляет какое-то кол-во скачиваний еще.
кол-во скачиваний привязано к времеи отсутствия пользователя
например если он отсутствовал два дня, а у вас стоит итератор 500 скачиваний в день, то кол-во "качек" может увеличиться на 0-1000
если 2 часа, то на 0-11
Ничего себе, спасибо вам огромное. Сейчас попробую использовать код. Мне только не совсем понятно как полученное число вывести в элемент списка <li>, вместо {{ $data['fileDownloadCounter'] }} вставить весь код? Подскажите, пожалуйста.
Возьмите некоторую постоянную базу, например название файла ( скажем количество букв ), умножьте на некоторую постоянную и прибавьте сколько-то минут от времени его добавления.
Т.е. например файл: "Кинофильм Выживший", добавленный 20 февраля 2016
Будет:
Длина строки: 18
Некоторая константа: 50
Количество прошедших минут: 39600
Итого: 18 * 50 + 39600 = 40500
Будет увеличиваться во времени и стартанет не с нуля, и рандом не нужен.
Я сам такое написать точно не смогу. Да и должен быть способ попроще. Возможно на php не так уж и сложно пишется генерация чисел в определенном диапазоне, хотя может я и ошибаюсь. Кто бы подсказал как это сделать.
{{ round($data['fileDownloadCounter'] * 4.5167)}}
Умножайте на какое-то дробное число реальное количество скачиваний и потом округляйте. Если будете умножать на целое - будет не реалистично (всегда кратное).
Спасибо, но наверно не вариант опираться на реальные скачивания. Ведь после загрузки каждый файл не сразу набирает реальные скачивания. Кому как повезет) И соответственно у части файлов скачиваний 0. Да и мне бы генерацию значений в диапазоне от 100 до 500.