2013-07-15 4 views
0

Я хочу рассчитать общее количество страниц, которые посетил пользователь. Проблема в моем коде, когда пользователь посещает страницу, счетчик увеличивается на 1, что хорошо, но когда пользователь обновляет страницу много раз, счетчик продолжает расти. Я хочу увеличить счетчик при первом посещении пользователя, но не при обновлении страницы. Как решить эту проблему?Как мне подсчитать количество просмотров страниц?

+0

пользовательские файлы cookie как идентификатор – softsdev

+0

Вы должны записать пользователя ip и datetime, при посещении проверить, если он уже посетил страницу сегодня, если не увеличить счет. Вы также можете ограничить интервал до полутора часов, и вы можете обрезать эту таблицу каждый день, чтобы она не заполняла слишком много места. – Aleeeeee

+0

Вы можете сделать несколько вещей, чтобы предотвратить это: A) использовать cookie/session B) check user IP, useragent – Prix

ответ

1

Лучшим способом является использование некоторых js-трекеров, таких как Google Analytics..

Если вы не хотите отслеживать обновление страницы, вы можете использовать cookie или session, чтобы сохранить временную метку последнего времени, когда произошло приращение, поэтому вы не увеличиваете его до истечения срока его действия.

+0

Какое должно быть время сеанса для конкретного пользователя? – user2354209

+0

Ну, вы можете хранить cookie за период сеанса и увеличивать каждый раз, когда cookie не установлен (каждый раз, когда пользователь закрывает браузер и переходит на вашу страницу). Или вы можете хранить cookie до конца дня, поэтому вы будете отслеживать уникальных посетителей за 24 часа. –

+0

Его еще НЕ стоит реализовывать с помощью PHP, лучше использовать js tracker. Он уже заботится о обновлениях и т. Д., Это даст вам гораздо больше информации, чем вы соберете себя. –

1

Использование sessions.

<?php 
session_start(); 
if (!isset($_SESSION['visited'])) 
{ 
    $_SESSION['visited'] = 1; 
    //increase the page view counter... 
} 

Это, однако, не будет работать, если пользователь отключил куки, так как нет поддержки куки не делает браузер не в состоянии держать идентификатор сеанса (который необходим для сеансов работы). Таким образом, обновление в браузере без файлов cookie будет по-прежнему давать слишком много кликов.

Чтобы справиться с этими случаями, вы можете запомнить IP-адреса ($_SERVER['REMOTE_ADDR']) и проверить, посетил ли ваш IP-адрес данный IP-адрес. Обратите внимание, что это решение по-прежнему уязвимо - «сложные» атаки, которые полагаются на использование прокси-серверов, по-прежнему смогут считать слишком много кликов.

Лучшим вариантом является использование внешней системы слежения, такой как Google Analytics.

0

Попробуйте использовать сеанс, очень простой пример был бы:

<?php 
session_start(); 
$counter = 0; 

if(! isset($_SESSION['visited'])): 
     $counter +=1; 
     $_SESSION['visited'] = TRUE; 
     $_SESSION['counter'] = $counter; 
endif; 
echo $_SESSION['counter']; 
?> 
+0

Что это за $ _SESSION ['visited']? – user2354209

+0

$ _SESSION ['visited'] - неинициализированный сеанс, при первом посещении значение null. Как только пользователь впервые посетит его, он всегда будет иметь значение TRUE, тогда значения будут установлены внутри оператора if, так что всякий раз, когда страница будет перезагружена, оператор if приведет к FALSE. –

0

Вы можете использовать куки для этого. При посещении проверьте, установлен ли cookie, если не установлен файл cookie для страницы (время жизни cookie может меняться в зависимости от того, что вы хотите), счетчик обновлений, только если cookie не установлен. Если вам нужно, чтобы счетчик был сложным, лучше использовать что-то вроде Google Analytics.

Смежные вопросы