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 » Куки и счетчик просмотров для страницы

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

1. Viper - 28 Октября, 2008 - 18:14:55 - перейти к сообщению
Собственно есть простенький счетчик, но беда в том что он тупо при каждом обращении к странице обновляет значение на +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
2. IOpeH - 28 Октября, 2008 - 18:59:21 - перейти к сообщению
что это за маразм =)))
надо примерно так
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_COOKIE['ka_hits']!='relax'){
  3.         setcookie('ka_hits','relax');
  4.         // изменяем значение в таблице
  5. }
  6.  
3. Viper - 28 Октября, 2008 - 19:12:39 - перейти к сообщению
чухаю репу... теперь при первом заходе говорит Notice: Undefined index: ka_hits in D:\WWW\htdocs\local\components\com\apple.php on line 102
4. Agassi - 28 Октября, 2008 - 19:23:50 - перейти к сообщению
Цитата:
$hits++;


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


может лучше

PHP:
скопировать код в буфер обмена
  1. if (!isset($_COOKIE['ka_hits']).....
5. Viper - 28 Октября, 2008 - 20:39:04 - перейти к сообщению
Agassi пишет:
а чему переменная равна Не понял не вижу де ты его создал


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

... собственно что так, что эдак... все равно прибавляет...
6. Agassi - 28 Октября, 2008 - 21:38:02 - перейти к сообщению
Я бы место этого
PHP:
скопировать код в буфер обмена
  1. if (isset($_COOKIE['ka_hits']) || empty($_COOKIE['ka_hits']) || $_COOKIE['ka_hits'] == 0) {
  2. setcookie('ka_hits', '1');
  3. }



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


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

От этого можна оттинутся и что-то создать.
7. Viper - 28 Октября, 2008 - 22:16:11 - перейти к сообщению
Agassi не ну это не совсем то... с временем у меня сессии вообще в БД хранятся... просто мне нужно не по времени, а именно когда юзверь закроет браузер, запустит снова и зайдет на страницу, только тогда его посещение засчитывалось... а сравнние времени да ещё на JS... как-то не особо охота городить...
8. Agassi - 28 Октября, 2008 - 22:40:52 - перейти к сообщению
Если без джавасрипта ты это зделаешь,то покажешь что получилось.



В джавасрипте не силён,попробую найти способ,как узнать закрытие окна через крестик окна.И это решит всю проблему
9. Viper - 29 Октября, 2008 - 07:20:58 - перейти к сообщению
либо я чего то не понял, но кука ведь если не задать время истекает когда сессия заканчивается, а в данном случае это при закрытии браузера.
10. vitaliy_mad - 29 Октября, 2008 - 10:52:27 - перейти к сообщению
если надо при закрыти - открытии почему бы не использовать сессии?

типа такого
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!isset($_SESSION['hit']))
  3. {
  4.      $_SESSION['hit']='something';
  5.      // увеличение в базе...
  6. }
  7. else
  8. {
  9.      // уже посчиталось
  10. }
11. Agassi - 29 Октября, 2008 - 16:23:41 - перейти к сообщению
Неплохо взять сессии.

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

С джаваскриптом знаю как,а пхп пока лес для меня))
12. vitaliy_mad - 29 Октября, 2008 - 16:36:57 - перейти к сообщению
Agassi пишет:
Неплохо взять сессии.

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

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


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

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

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


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

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


я так сделал для голосования и для формы комментариев. сессии через БД. но для счетчика решил что на БД будет довольно большая нагрузка.
14. vitaliy_mad - 29 Октября, 2008 - 19:29:32 - перейти к сообщению
Viper пишет:
я так сделал для голосования и для формы комментариев. сессии через БД. но для счетчика решил что на БД будет довольно большая нагрузка.

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




Другой вариант-это CGI.Больше всего для счётчиков подходит он.

 

Powered by ExBB FM 1.0 RC1