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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Viper
Отправлено: 28 Октября, 2008 - 18:14:55
Post Id



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


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


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




Собственно есть простенький счетчик, но беда в том что он тупо при каждом обращении к странице обновляет значение на +1, соответственно счетчик можно накрутить. Начал делать ограничение на добавление с помощью куки, но не могу понять что не так и где затык...

CODE (text):
скопировать код в буфер обмена
  1. if (isset($_COOKIE['ka_hits']) || empty($_COOKIE['ka_hits']) || $_COOKIE['ka_hits'] == 0) {
  2.         setcookie('ka_hits', '1');
  3. } else {
  4.         $hits++;
  5.         $database->setQuery("UPDATE #__db SET hits = '$hits' WHERE id = '$id'");
  6.         $database->query();
  7. }


кука устанавливается, но счетчик даже при закрытии/открытии браузера не добавляет +1


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



Частый гость


Покинул форум
Сообщений всего: 175
Дата рег-ции: Нояб. 2007  


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




что это за маразм =)))
надо примерно так
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_COOKIE['ka_hits']!='relax'){
  3.         setcookie('ka_hits','relax');
  4.         // изменяем значение в таблице
  5. }
  6.  
 
 Top
Viper
Отправлено: 28 Октября, 2008 - 19:12:39
Post Id



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


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


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




чухаю репу... теперь при первом заходе говорит Notice: Undefined index: ka_hits in D:\WWW\htdocs\local\components\com\apple.php on line 102


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Agassi
Отправлено: 28 Октября, 2008 - 19:23:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


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




Цитата:
$hits++;


а чему переменная равна Не понял не вижу де ты его создал
(Добавление)


может лучше

 
 Top
Viper
Отправлено: 28 Октября, 2008 - 20:39:04
Post Id



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


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


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




Agassi пишет:
а чему переменная равна Не понял не вижу де ты его создал


значение переменной берется из БД.

... собственно что так, что эдак... все равно прибавляет...


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



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


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




Я бы место этого
PHP:
скопировать код в буфер обмена
  1. if (isset($_COOKIE['ka_hits']) || empty($_COOKIE['ka_hits']) || $_COOKIE['ka_hits'] == 0) {
  2. setcookie('ka_hits', '1');
  3. }



забацал бы такое:
У клиента в джаваскрипте создал бы функцию,которая сама себя вызевает каждый 5мин.И в куки в переменую добавляет время.


А при обрашени к серверу можна забацать проверку типа времени не поже 10мин.
Если Разница в времени больше 10мин.

От этого можна оттинутся и что-то создать.
 
 Top
Viper
Отправлено: 28 Октября, 2008 - 22:16:11
Post Id



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


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


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




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


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Agassi
Отправлено: 28 Октября, 2008 - 22:40:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


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




Если без джавасрипта ты это зделаешь,то покажешь что получилось.



В джавасрипте не силён,попробую найти способ,как узнать закрытие окна через крестик окна.И это решит всю проблему
 
 Top
Viper
Отправлено: 29 Октября, 2008 - 07:20:58
Post Id



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


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


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




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


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
vitaliy_mad
Отправлено: 29 Октября, 2008 - 10:52:27
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




если надо при закрыти - открытии почему бы не использовать сессии?

типа такого
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!isset($_SESSION['hit']))
  3. {
  4.      $_SESSION['hit']='something';
  5.      // увеличение в базе...
  6. }
  7. else
  8. {
  9.      // уже посчиталось
  10. }

(Отредактировано автором: 29 Октября, 2008 - 13:07:34)

 
 Top
Agassi
Отправлено: 29 Октября, 2008 - 16:23:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


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




Неплохо взять сессии.

А как узнать,когда пользователь вышел из сайта??

С джаваскриптом знаю как,а пхп пока лес для меня))
 
 Top
vitaliy_mad
Отправлено: 29 Октября, 2008 - 16:36:57
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




Agassi пишет:
Неплохо взять сессии.

А как узнать,когда пользователь вышел из сайта??

С джаваскриптом знаю как,а пхп пока лес для меня))


Можно например хранить в базе таймстамп последнего обновления брать его функцией time() после чего проверять если текущий time() больше того что в базе например на 120 (сек) то пользователь отстутсвует на сайте... то есть таймоут 2 минуты или сколько надо...
 
 Top
Viper
Отправлено: 29 Октября, 2008 - 17:24:24
Post Id



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


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


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




в общем сделал на сессиях.

Agassi пишет:
Неплохо взять сессии.

А как узнать,когда пользователь вышел из сайта??


сессия автоматически прекращается когда закрывается браузер.

vitaliy_mad пишет:
Можно например хранить в базе таймстамп последнего обновления брать его функцией time() после чего проверять если текущий time() больше того что в базе например на 120 (сек) то пользователь отстутсвует на сайте... то есть таймоут 2 минуты или сколько надо...


я так сделал для голосования и для формы комментариев. сессии через БД. но для счетчика решил что на БД будет довольно большая нагрузка.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
vitaliy_mad
Отправлено: 29 Октября, 2008 - 19:29:32
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




Viper пишет:
я так сделал для голосования и для формы комментариев. сессии через БД. но для счетчика решил что на БД будет довольно большая нагрузка.

Нагрузка будет минимальна... обращение к БД идет в десятки раз быстрее и менее трудоемко для системы чем к файлам... другого варианта все равно нет... где то нао хранить время последнего обращения к серваку от клиента...
 
 Top
Agassi
Отправлено: 29 Октября, 2008 - 20:30:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 158
Дата рег-ции: Окт. 2008  


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




vitaliy_mad пишет:
. другого варианта все равно нет..




Другой вариант-это CGI.Больше всего для счётчиков подходит он.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB