• Страница 1 из 1
  • 1
Модератор форума: JonMagon  
Скрипт ограничения количества скачиваний
PatriotRus39
Сообщений: 94
Репутация: 2

Сообщение # 1 | 14:13:52
Здравствуйте! Может ли кто помочь с данным скриптом? Требуется ввести лимит на скачивание файлов с сайта для пользователей, например до 10 файлов в сутки. Желательно устанавливать лимит для профиля пользователя.

Нарыл в сети несколько скриптов, не ни один не работает... Как на Php, так и на Java, с помощью cookie. Устанавливать данный скрипт планирую в фотоальбоме.

Как я понимаю, чтоб был лимит для каждого профиля без php не обойтись?
Пробовал такой вариант, но он не работает, в поле где должна выводится ссылка её нет.
Изначально этот скрипт был сделан для файлов, может поэтому в фотоальбоме и не хочет работать?

Так же смутил вот этот фрагмент: <?if($IP_ADDRESS$='92.241.162.74')?>
Нужно, чтобы Ip пользователя был равен IP сервера?????

Code
<?if($GROUP_ID$=3 || $GROUP_ID$=4)?>
<a href="#" onclick="limit(); return false;">Лимит на скачивание</a>
<script>
function limit(){
$.getScript('/php/add.php?uid=$_USER_ID$');
}
</script>
<?endif?>

Далее идём в код Страницы полного материала Каталога файлов и заменяем переменную ссылки на скачивание($RFILE_URL$, можно использовать любую переменную) и заменяем ссылку на:

Code
<?if($RFILE_URL$)?>
<?if($IP_ADDRESS$='92.241.162.74')?>
<uSite>$RFILE_URL$</uSite>
<?endif?>
<a href="#" onclick="down(); return false;">Download</a>
<script>
function down(){
$.getScript('/php/add.php');
}
</script>
<?endif?>

где 92.241.162.74 - IP сервера.
Как узнать IP сервера? Да очень просто, в архиве есть инструкция.
Архив распаковываем в корень хостинга для php скриптов (папка scripts)
В файле add.php в начале:

Code
$n = 5;
$site = "http://usite.su";

где:
$n - ограничение скачиваний по-стандарту
$site - ссылка на ваш сайт
Установка завершена.

Добавлено (25 Окт 2013, 14:13:52)
---------------------------------------------
За доработку скрипта готов заплатить.


uCoz - лучшая российская компания!
Наши сервера падают также часто как ракеты у Роскосмоса, а система обновляется чаще чем модельный ряд у Автоваза.
Miss_Esq
Сообщений: 13859
Репутация: 4159
Уровень замечаний:

Сообщение # 2 | 14:18:43

PatriotRus39
Сообщений: 94
Репутация: 2

Сообщение # 3 | 14:30:55
Там тоже уже написал. Может тут кто сможет помочь?

Как я понимаю ссылка не выводится из-за ошибки в этой части кода.

<?if($RFILE_URL$)?>
<?if($IP_ADDRESS$='92.241.162.74')?>
<uSite>$RFILE_URL$</uSite>
<?endif?>
<a href="#" onclick="down(); return false;">Download</a>
<script>
function down(){
$.getScript('/php/add.php');
}
</script>
<?endif?>

Скорей всего из-за этого:

<?if($IP_ADDRESS$='92.241.162.74')?>
<uSite>$RFILE_URL$</uSite>
<?endif?>

Что автор хотел сказать этим условием случаной не знаете?)

uCoz - лучшая российская компания!
Наши сервера падают также часто как ракеты у Роскосмоса, а система обновляется чаще чем модельный ряд у Автоваза.
TommyPanda
Сообщений: 28
Репутация: 15

Сообщение # 4 | 00:54:13
Я бы сделал через localStorage - это явно не самый надёжный способ, но 95% посетителей, которые не знают JS этот вариант ограничит.

Это код HTML для расположения ссылки на скачивание.
Код
<a href="#" class="limited_item" style="display:none">Download</a>
<span id="denined_url" style="display:none"> Внимание: Достигнут лимит на скачивание. Приходите завтра =) </span>

Это код Javascript для работы лимита. Располагаем ниже под кодом HTML:


Код
<script type="text/javascript">

var q = 10;  
var user = 'limmm' + '$USER_ID$'
var userTime = user + 't';
var ulim = +localStorage.getItem(user);
var url = $('.limited_item');   
url.click(function() { limitPlus(user) });
       
        
       function checkLimit(n) {
         var nn = checkTime(n);
       if(nn<q) {   
             url.show();  
       } else {  
            url.remove();  
            $('#denined_url').show();
       }
       }
        
       function checkTime(n) {
         var now = new Date().getHours();
         var last = localStorage.getItem(userTime);
         if(last==null) {
           return '0'
         } else if(+last>now) {
            localStorage.setItem(user, '1');
            return '1';
         } else {
           return n;
         }
       }
        
       function limitPlus(u) {
         var nowH = new Date().getHours();
         localStorage.setItem(userTime, nowH);  
          
         var num = +localStorage.getItem(user);
         if(num) {  
           num++
           localStorage.setItem(user, num);
           checkLimit(num)
         } else {
           localStorage.setItem(user, '1');
           checkLimit('1')
         }
       }
        

       checkLimit(ulim);

       </script>


Ссылка не песочницу с рабочим вариантом и счётчиком скачиваний - http://learn.javascript.ru/play/O5OeG (нажимаем 10 раз ссылку Download справа)


Особенности:
  • Обновление лимита происходит в 00:00 часов по времени пользователя, а не сервера.
  • LocalStorage - привязан к браузеру! При посещении сайта при помощи другого браузера у пользователя будут новые 10 скачиваний.
  • Для работы скрипта нужен jQuery (он по-умолчанию установлен на всех сайтах Ucoz), На других сайтах (не Ucoz) требуется подключение jQuery
  • Для изменения лимита скачивания (по умолчанию - 10 раз) измените цифру в первой строке (var q = 10).
  • Скрипт распространяется на все ссылки с классом "limited_item", то есть подходит для размещения в шаблоне вида материала и будет действовать общий лимит на все материалы.

Добавлено (26 Окт 2013, 00:54:13)
---------------------------------------------
Проверил в разных браузерах - вроде работает =)

Сообщение отредактировал TommyPanda - Суббота, 26 Окт 2013, 00:48:11
PatriotRus39
Сообщений: 94
Репутация: 2

Сообщение # 5 | 18:16:56
Спасибо! Вроде работает! но всё же на php по профилю лучше)

uCoz - лучшая российская компания!
Наши сервера падают также часто как ракеты у Роскосмоса, а система обновляется чаще чем модельный ряд у Автоваза.
  • Страница 1 из 1
  • 1
Поиск:
Telegram
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!