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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: логика сессий или учет просмотров

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Viper
Отправлено: 28 Июня, 2009 - 21:03:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Задача такая. Есть 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 раз записать либо накрутка...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Вездеход
Отправлено: 28 Июня, 2009 - 21:34:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




чет я ниче не понял еси чесн...
одно понял - id это я так понимаю номер пользователя. а если запись не проходит то может сделать проще? - проверить у других пользователей - есть ли вообще это идишнег. мне чет кажется что ошибка в этом...

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

а потом это уже обрабатывать запросами и выводить нужную вам инфу...
запись можно делать сразу же в начале загрузки страницы например


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Viper
Отправлено: 28 Июня, 2009 - 21:45:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




да вот сначала думал тоже все в таблицу мурыжить, но на страницу около 15 запросов получается(помимо счетчика ещё куча данных выводится и записывается), поэтому решил через сессии.

$id содержит номер страницы, а $uid это идентификатор юзверя. эти 2 переменные всегда существуют только с разными естно значениями.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Вездеход
Отправлено: 29 Июня, 2009 - 07:47:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




Viper
делайте дебаги - на кажждом шаге делайте вывод инфы - т.е. сработало условие -
if (!empty($my->id)) - выведите для себя сообщение. и так далее, пока не поймете где срабатывают косяки.

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

у вас в любом случае происходит запись просмотра в базу. так что тут на запросах вы не экономите.
и кстати 15запросов это многовато... оптимизировать постарайтесь


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Viper
Отправлено: 29 Июня, 2009 - 14:07:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Вездеход да вот жеж понатыкал после каждого условия echo но что-то не могу понять все равно.

по поводу оптимизации... двиг joomla. лично в моем компоненте 3-5 запроса на страницу. в самой же joomla 14 при кешировании. так что остается развести руками Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
JustUserR
Отправлено: 30 Июня, 2009 - 02:08:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Viper Прошу прощения но мне кажется что опять вылезла старая "добрая" ошибка с cookies а как следствие и с сессиями
У вас счетчик случайно не во фрейме как картинка какая-нибудь загружается? Если это так то действительно придется идти обходным путем
Ну или поступить как посоветовал Вездеход


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Viper
Отправлено: 30 Июня, 2009 - 08:15:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




JustUserR не. куки не использую в принципе. морально устаревший метод.
т.к. тестирую на локалке то есть непосредственный доступ к файлам сессий. т.е. сессия создается с правильными данными, но вот условие не отрабатывает так как нужно. фреймы не использую в принципе. и не картинка. просто при заходе на страницу выполняется скрипт из первопоста.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Viper
Отправлено: 30 Июня, 2009 - 13:57:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




тыкс... вроде бы сделал... нуно ещё потестировать. позже выложу если все будет гуд.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB