Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: логика сессий или учет просмотров
Форумы портала PHP.SU » PHP » Программирование на PHP » логика сессий или учет просмотров

Страниц (1): [1]
 

1. Viper - 28 Июня, 2009 - 21:03:38 - перейти к сообщению
Задача такая. Есть n-ое количество страниц и есть n-ое количество пользователей. Собственно пробую сделать учет просмотров для каждой страницы, но столкнулся с проблемой накрутки счетчика.

Пробую так
PHP:
скопировать код в буфер обмена
  1. if (!empty($my->id)) {
  2.         $uid = md5($my->id);
  3.         $mid = md5($id);
  4.         if (!isset($_SESSION[md5('user')]) && !isset($_SESSION[md5('movie')])) {
  5.                 $_SESSION[md5('user')] = $uid;
  6.                 $_SESSION[md5('movie')] = $mid;
  7.  
  8.                 $hits++;
  9.                 $database->setQuery("UPDATE #__users SET hits = '".(int)$hits."' WHERE id = '".(int)$id."'");
  10.                 $database->query();
  11.         } elseif ($_SESSION[md5('user')] != $uid && $_SESSION[md5('movie')] != $mid) {
  12.                 $hits++;
  13.                 $database->setQuery("UPDATE #__users SET hits = '".(int)$hits."' WHERE id = '".(int)$id."'");
  14.                 $database->query();
  15.         }
  16. }


собственно если зайти на 1 страницу то происходит запись 1 раз. т.е. если потом перейти на другую страницу другим $id то ничего не записывается, хотя должно. Так же проблема и в том что если заходит юзер с другим $uid то счетчик его тоже не учитывает.

В общем что-то никак не пойму логику как правильно оформить. Выходит либо 1 раз записать либо накрутка...
2. Вездеход - 28 Июня, 2009 - 21:34:39 - перейти к сообщению
чет я ниче не понял еси чесн...
одно понял - id это я так понимаю номер пользователя. а если запись не проходит то может сделать проще? - проверить у других пользователей - есть ли вообще это идишнег. мне чет кажется что ошибка в этом...

зы. а можно еще проще - сделать табличку, и туда писать данные в виде
uid | user_id | page | date | time | refer
номер записи | номер пользователя(или логин) | страница которую смотрели | дата | время | откуда пришел

а потом это уже обрабатывать запросами и выводить нужную вам инфу...
запись можно делать сразу же в начале загрузки страницы например
3. Viper - 28 Июня, 2009 - 21:45:54 - перейти к сообщению
да вот сначала думал тоже все в таблицу мурыжить, но на страницу около 15 запросов получается(помимо счетчика ещё куча данных выводится и записывается), поэтому решил через сессии.

$id содержит номер страницы, а $uid это идентификатор юзверя. эти 2 переменные всегда существуют только с разными естно значениями.
4. Вездеход - 29 Июня, 2009 - 07:47:55 - перейти к сообщению
Viper
делайте дебаги - на кажждом шаге делайте вывод инфы - т.е. сработало условие -
if (!empty($my->id)) - выведите для себя сообщение. и так далее, пока не поймете где срабатывают косяки.

Viper пишет:
но на страницу около 15 запросов получается

у вас в любом случае происходит запись просмотра в базу. так что тут на запросах вы не экономите.
и кстати 15запросов это многовато... оптимизировать постарайтесь
5. Viper - 29 Июня, 2009 - 14:07:10 - перейти к сообщению
Вездеход да вот жеж понатыкал после каждого условия echo но что-то не могу понять все равно.

по поводу оптимизации... двиг joomla. лично в моем компоненте 3-5 запроса на страницу. в самой же joomla 14 при кешировании. так что остается развести руками Улыбка
6. JustUserR - 30 Июня, 2009 - 02:08:51 - перейти к сообщению
Viper Прошу прощения но мне кажется что опять вылезла старая "добрая" ошибка с cookies а как следствие и с сессиями
У вас счетчик случайно не во фрейме как картинка какая-нибудь загружается? Если это так то действительно придется идти обходным путем
Ну или поступить как посоветовал Вездеход
7. Viper - 30 Июня, 2009 - 08:15:09 - перейти к сообщению
JustUserR не. куки не использую в принципе. морально устаревший метод.
т.к. тестирую на локалке то есть непосредственный доступ к файлам сессий. т.е. сессия создается с правильными данными, но вот условие не отрабатывает так как нужно. фреймы не использую в принципе. и не картинка. просто при заходе на страницу выполняется скрипт из первопоста.
8. Viper - 30 Июня, 2009 - 13:57:33 - перейти к сообщению
тыкс... вроде бы сделал... нуно ещё потестировать. позже выложу если все будет гуд.

 

Powered by ExBB FM 1.0 RC1