Форум русской поддержки Joomla!® CMS
06.12.2016, 14:18:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Подсчет количества кликов пользователя по кнопке. Дата последнего клика

 (Прочитано 611 раз)
0 Пользователей и 1 Гость смотрят эту тему.
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« : 23.03.2016, 17:45:45 »

Здравствуйте, нужно реализовать подсчет количества кликов по кнопке текущего пользователя. Т.е. чтобы за одну сессию если юсер кликнул на кнопку 1 или больше раз в БД прибавлялась эта единица к существующей сумме. Плюс ко всему нужно чтобы в БД обновлялась дата последнего клика. Как определить текущего юсера я знаю, а вот как добавлять эти данные нет.
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #1 : 24.03.2016, 09:55:26 »

немного не так сформулировал, в общем сколько бы раз юсер не кликнул на кнопку за один сеанс, в БД должна прибавляться только единица за один сеанс.
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #2 : 24.03.2016, 17:50:41 »

решил делать через запрос sql, но не могу разобраться как его написать правильно по новому синтаксису для Joomla и с защитой от иньекций. вот часть кода с запросом:
Код:
$count = $result["count"] +1; // Берем число просмотров и добавляем +1 просмотр.
mysql_query("UPDATE `xxx_users` SET `zaka4ka`='".$count."' WHERE `id`='".$id."'"); //
Записан
midav
Живу я здесь
******

Репутация: +113/-1
Offline Offline

Пол: Мужской
Сообщений: 946



« Ответ #3 : 24.03.2016, 19:01:23 »

Почитайте здесь .
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #4 : 25.03.2016, 10:08:37 »

спасибо полезные статьи, вопрос там в таблицах указывается префикс с 2 нижними подчеркиваниями вот так #__content нужно именно с 2-мя или с 1-м нижним подчеркиванием? и такой синтаксис будет ли поддерживать j2.5?(я знаю что это ветка для 3, просто вопрос на адаптивность)
Записан
CaHeK_pk
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 119


« Ответ #5 : 25.03.2016, 10:19:11 »

спасибо полезные статьи, вопрос там в таблицах указывается префикс с 2 нижними подчеркиваниями вот так #__content нужно именно с 2-мя или с 1-м нижним подчеркиванием? и такой синтаксис будет ли поддерживать j2.5?(я знаю что это ветка для 3, просто вопрос на адаптивность)

с двумя нижними слешами "#__имя-таблицы" и лучше использовать для подключения к бд средства joomla:
Код
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->update('#__users')
->set('zaka4ka = "'. $count.'"')
->where('id = "'. $id.'"');
$db->setQuery($query)->execute();
 
#__users - если название таблицы к примеру: prefix_users
и да, 2.5 поддерживает данный синтаксис, если не ошибаюсь Joomla его поддерживает с версии 1.5, точно утверждать не могу
« Последнее редактирование: 25.03.2016, 10:23:09 от CaHeK_pk » Записан
b2z
Support Team
*****

Репутация: +710/-0
Online Online

Пол: Мужской
Сообщений: 7527


Разраблю понемногу


« Ответ #6 : 25.03.2016, 10:44:35 »

Ещё Почитайте на досуге.
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #7 : 25.03.2016, 11:18:27 »

Видел вы уже написали, что тут sql иньекция(в предыдущем сообщении и удалили свой пост) перешел по вашей ссылке, так верно будет?
Код:
$db = JFactory::getDBO();
settype($id,'integer');
settype($count,'integer');
$query = $db->getQuery(true);
$query->update('#__users')
->set('zaka4ka = "'. $count.'"')
->where('id = "'. $id.'"');
$db->setQuery($query)->execute();
Записан
CaHeK_pk
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 119


« Ответ #8 : 25.03.2016, 11:23:47 »

Видел вы уже написали, что тут sql иньекция(в предыдущем сообщении и удалили свой пост) перешел по вашей ссылке, так верно будет?
Код:
$db = JFactory::getDBO();
settype($id,'integer');
settype($count,'integer');
$query = $db->getQuery(true);
$query->update('#__users')
->set('zaka4ka = "'. $count.'"')
->where('id = "'. $id.'"');
$db->setQuery($query)->execute();

должно работать, можете увидеть результат вывода инъекции (в обычном формате SQL) через
Код
echo $query;
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #9 : 25.03.2016, 12:16:35 »

т.е. уже безопасно? или еще что-то добавить? еще прочел за JInput , но немного не понял, как его юзать..
Записан
CaHeK_pk
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 119


« Ответ #10 : 25.03.2016, 12:38:25 »

т.е. уже безопасно? или еще что-то добавить? еще прочел за JInput , но немного не понял, как его юзать..
ничего безопасного нет:))но на этапе соединения с БД и работы с ней на данный момент здесь указан самый безопасный вариант.
Какая именно задача, вас с классом "JInput" интересует?
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #11 : 25.03.2016, 12:48:57 »

та вот думал нужно ли сюда JInput..
Записан
vipiusss
Профи
********

Репутация: +260/-8
Online Online

Пол: Мужской
Сообщений: 4572


Skype: renor_


« Ответ #12 : 25.03.2016, 13:03:54 »

Я делал подсчёт кликов без БД.Без скриптов, чистый php.
Записывается просто в тексовый файл (можно и накручивать), только дату не выводил, но это думаю не проблема с выводом.
Вывод у меня-число кликов из txt файла.
Про дату не думал ещё (не надо было).
Если в теме захотите пример и решение, напишу.
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #13 : 25.03.2016, 13:57:01 »

Я делал подсчёт кликов без БД.Без скриптов, чистый php.
Записывается просто в тексовый файл (можно и накручивать), только дату не выводил, но это думаю не проблема с выводом.
Вывод у меня-число кликов из txt файла.
Про дату не думал ещё (не надо было).
Если в теме захотите пример и решение, напишу.
спасибо, выкладывайте, интересный вариант, а в случае если каждому юсеру нужно определить количество кликов отдельно, подойдет?
Записан
vipiusss
Профи
********

Репутация: +260/-8
Online Online

Пол: Мужской
Сообщений: 4572


Skype: renor_


« Ответ #14 : 25.03.2016, 14:11:41 »

а в случае если каждому юсеру нужно определить количество кликов отдельно, подойдет?
повторюсь, я делал просто кол-во кликов с записью в файл без БД.
ничего добавочного мне не надо было и я этим не извращался.
демо могу дать в личку, если напишите, сайт сырой и на показ нет желания выставлять, но функция работает.

вот код:

Код:

<?php
if ($_GET['имя для скрипта']==1) {
header("location: http://ваш адрес что скачиваем);
$file=fopen("имя файла 1 для записи.txt","a+");
flock($file,LOCK_EX);
$count=fread($file,100);
$count++;
ftruncate($file,0);
fwrite($file,$count);
flock($file,LOCK_UN);
fclose($file);
}

else if ($_GET['имя для скрипта']==2) {
header("location: http://ваш адрес что скачиваем");
$file=fopen("имя куда записываем.txt","a+");
flock($file,LOCK_EX);
$count=fread($file,100);
$count++;
ftruncate($file,0);
fwrite($file,$count);
flock($file,LOCK_UN);
fclose($file);
}
?>


Числа указывают на лимит объёма, я указал 100 для своего.

Забыл, вот сам вывод:

<a href="http://имя кода(файла).php?имя текс дока, куда запись=номер файла(у меня они по номерам)">
отображаемое имя при клике</a>
Записан
vipiusss
Профи
********

Репутация: +260/-8
Online Online

Пол: Мужской
Сообщений: 4572


Skype: renor_


« Ответ #15 : 25.03.2016, 14:15:36 »

про каждому юзеру, думаю не трудно:
получаем ИД юзера, дополняем ИФ/Елзе для выбора, иначе РЕТУРН.

///

если не понятны мои слова-замещения в коде, дам в личку прямой код и сами меняйте.

Количесво неограничено, просто добавляем else if ($_GET['имя для скрипта']==номер файла)

Поправка: файл на запись 666 текстовый должен быть, насколько это уязвимо, не думал.
У вас там просто будет число,1 символ, пробовал атаковать данный файл, скрипт не принимает, так что думаю можно не парится.
Хотя не гарантирую, что влезть в скрипт нельзя, узнайте у ГУРУ форума, если решите установить.
"Я не волшебник, я только учусь!"(с)
« Последнее редактирование: 25.03.2016, 14:30:46 от vipiusss » Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #16 : 25.03.2016, 16:06:52 »

Спасибо возьму себе на заметку, когда-то интересовался данным решением для другой задачи, но тут не такая необходимость, поэтому оставлю все в БД, как-то проще что-ли с ней работать.. думаю от маленького запроса в 2 строки сервер не упадет ))
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #17 : 25.03.2016, 18:04:40 »

Итак расскажу что мне нужно подробнее:
Код:
Если (юсер гость)
{
 то ему выдается 1-я ссылка
}
Если нет
{
 то ему выдается 2-я ссылка;
 если юсер переходит по 2-й ссылке должна прибавляться единица в поле БД,
 но только один раз за сессию сколько бы раз юсер не кликнул по кнопке,
 и должна !обновляться! дата последнего клика(до даты я пока не дошел)
}

Вот что я сделал, прошу помочь, собрано из открытых источников, вопросы в коментах:
Показать текстовый блок
Записан
vipiusss
Профи
********

Репутация: +260/-8
Online Online

Пол: Мужской
Сообщений: 4572


Skype: renor_


« Ответ #18 : 25.03.2016, 18:34:10 »

Даже увидев, что у вас Скачать вообще не в функции, не стал смотреть код.
И визуально увидел отсебятину:

<script>
         function submitform(form){ //вместо form в скобках - должно быть formprice?
            document.forms[form].submit(); //вместо form в скобках - должно быть formprice?
         }
      </script>

Это кто вас так научил?
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #19 : 25.03.2016, 19:21:05 »

Даже увидев, что у вас Скачать вообще не в функции, не стал смотреть код.
И визуально увидел отсебятину:

<script>
         function submitform(form){ //вместо form в скобках - должно быть formprice?
            document.forms[form].submit(); //вместо form в скобках - должно быть formprice?
         }
      </script>

Это кто вас так научил?
на одном блоге вычитал, ссылку сейчас не смогу привести, но смысл был в том чтобы к ссылке href прикрутить sumbit чтобы определить что клик был сделан.. если у вас есть возможность, подскажите пожалуйста как правильно определить что юсер кликнул по ссылке..
« Последнее редактирование: 25.03.2016, 19:32:17 от hels » Записан
vipiusss
Профи
********

Репутация: +260/-8
Online Online

Пол: Мужской
Сообщений: 4572


Skype: renor_


« Ответ #20 : 25.03.2016, 19:29:30 »

так у вас <img src="images/button/price.png" alt="price" data-mce-src="images/button/price_dsu.png" border="0">Скачать</a> вообще мимо кода и в стороне пиво пьёт
Или вы это не видете?!

причёт тут ваши объяснение, если банально неправильно?!

вы даже алт не верно расписали.
да кто вас этому учит?

это что за порно: alt="price" data-mce-src="images/button/price_dsu.png"
« Последнее редактирование: 25.03.2016, 19:33:07 от vipiusss » Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #21 : 25.03.2016, 19:40:38 »

так у вас <img src="images/button/price.png" alt="price" data-mce-src="images/button/price_dsu.png" border="0">Скачать</a> вообще мимо кода и в стороне пиво пьёт
Или вы это не видете?!

причёт тут ваши объяснение, если банально неправильно?!

вы даже алт не верно расписали.
да кто вас этому учит?

это что за порно: alt="price" data-mce-src="images/button/price_dsu.png"
по поводу порно - http://stackoverflow.com/questions/23284931/tinymce-editor-adds-data-mce-src-to-img c alt все норм это редактор балуется, тем не менее все работает

по поводу того что в стороне пиво пьет, вы неверно поняли, просто кнопка должна показываться в любом случае, поэтому она за границей условия, а сама часть ссылки которая у меня в условии обрамлена в echo
Записан
vipiusss
Профи
********

Репутация: +260/-8
Online Online

Пол: Мужской
Сообщений: 4572


Skype: renor_


« Ответ #22 : 25.03.2016, 19:47:56 »

я думаю не верно
хотя я могу ошибаться
по логике цикл вашу кнопку не завершает и не добавляет++1 в if
вам виднее.
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #23 : 25.03.2016, 19:52:43 »

я думаю не верно
хотя я могу ошибаться
по логике цикл вашу кнопку не завершает и не добавляет++1 в if
вам виднее.
а в этой строке разве не определяется произошел sumbit или нет?
Код:
if(isset($_POST["field-form-price"]))
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3584


« Ответ #24 : 25.03.2016, 21:51:43 »

Показать текстовый блок
Должно работать, но надо делать проверку на IP, чтобы не накручивался счет при каждом клике.
« Последнее редактирование: 28.03.2016, 17:27:36 от robert » Записан
vipiusss
Профи
********

Репутация: +260/-8
Online Online

Пол: Мужской
Сообщений: 4572


Skype: renor_


« Ответ #25 : 25.03.2016, 22:08:56 »

echo рулит)))

думаю правильно, проверяйте.

спс за внимание, ждём ответ на адекватность кода от тех, кто установил.

Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #26 : 28.03.2016, 17:14:14 »

Показать текстовый блок
Должно работать, но надо делать проверку на IP, чтобы не накручивался счет при каждом клике.
Спасибо за помощь, но не работает, вернее если зашел гость то условие выполняется, а если пользователь, то условие не выполняется, даже кнопка не отображается..  
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #27 : 28.03.2016, 17:20:54 »

нашел дубль значения value в условии, но это не меняет дело, копаю дальше..
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3584


« Ответ #28 : 28.03.2016, 17:40:28 »

Спасибо за помощь, но не работает, вернее если зашел гость то условие выполняется, а если пользователь, то условие не выполняется
Что не выполняется? Ваш код считает только клики пользователей, я логику не менял.
даже кнопка не отображается..
А кнопки там и не было: вместо нее для прикола я поставил текст "Хрен вам скачать".
нашел дубль значения value в условии
Да, это мой косяк, убрал.
Записан
hels
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 95


« Ответ #29 : 28.03.2016, 22:24:51 »

Короче немного разобрался, сейчас расскажу что я намудрил, я создал обычный HTML модуль через стандартное меню Joomla, потом поставил плагин sourcer, походу этот плагин режет HTML код, потому как условия php работают(пока в плане определения гость или нет зашел на сайт, т.к. нажать на кнопку не могу из-за обрезанного html). Может есть вариант как этот код подключить в отдельный файл, как плагин или модуль? Спасибо всем за помощь drink
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet