счетчик посетителей

У меня есть приведенный ниже код, который вставляется, когда пользователь открывает страницу и обновляет ее. Я хочу обновить набор таблиц посещений. или нажмите ALT+F4 ...... вот моя попытка:

session_start();
if (!isset($_SESSION["visits"]))
    $_SESSION["visits"] = 0;
    $_SESSION["visits"] = $_SESSION["visits"] + 1;
if ($_SESSION["visits"] > 1){
    mysql_query("INSERT INTO najd_visit( visit_userId, visit_staticId, visit_page, visit_enterTime,visit_refreshTime)VALUES ('$userId', '$Sid', '$title','$Stime' ,'$date') ");
    echo "You hit the refresh button!";}else{
    mysql_query("INSERT INTO najd_visit( visit_userId, visit_staticId, visit_page, visit_enterTime)VALUES ('$userId', '$Sid', '$title', '$date') ");
    echo "This is my site".$_SESSION["visits"];
}

person beginner web developer    schedule 09.06.2012    source источник
comment
Я бы рекомендовал использовать существующий сервис для этого. Я использую Clicky, так как мне нравятся их материалы в реальном времени. Google также часто используется.   -  person Svish    schedule 09.06.2012


Ответы (4)


Невозможно зарегистрировать пользователя, покидающего страницу. Вы можете сделать оценку на основе активности пользователя, но это все.

Однако вы можете определить, откуда пришел пользователь. Если пользователь начинает с index.php в 1:00 и достигает page2.php в 1:02, вы можете проверить $_SERVER-superglobal, чтобы определить, что пользователь пришел из index.php, и обновить эту конкретную статистику.

Но помимо всего этого, не очень интересно знать, когда пользователь покидает вашу страницу.

person Sherlock    schedule 09.06.2012
comment
как я могу это сделать?? Я хочу знать, когда пользователь открывает страницу и когда закрывает ее, и как долго остается на ней? - person beginner web developer; 09.06.2012

PHP не может определить, когда посетитель покидает ваш сайт.

Однако вы можете использовать JavaScript для обнаружения события страницы unload, а затем быстро сделать запрос AJAX для записи отправления... это не всегда будет работать, поскольку сетевая задержка может привести к тому, что ваш скрипт будет "пропущен" при загрузке браузера. следующая страница.

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

Во всех других случаях вам просто нужно предположить, что примерно через 5 минут последней посещенной страницей была «страница отправления».

person Ja͢ck    schedule 09.06.2012

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

На стороне клиента

Сделайте ajax-запрос к http://www.yousite.com/update_user.php?userID=*user_id* каждые 10 секунд.

Этот скрипт обновит строку в вашей базе данных mysql, она должна выглядеть примерно так.

UPDATE online_user SET last_check=NOW() WHERE user_id=$_GET['userID']

На стороне сервера

Запускать cron каждую минуту. Он проверит, что пользователи не обновили свои строки (давайте возьмем 20 секунд, чтобы быть в безопасности)

SELECT user_id FROM online_user WHERE last_check <= *NOW() - 20 seconds*

Затем вы можете редактировать строки, где бы вы ни хотели, говоря, что пользователь, соответствующий user_id, остался между его «last_check» и +10 секундами, вы можете делать запрос каждые 1 или 2 секунды, если вам нужно быть точным

person Jey    schedule 09.06.2012

если вы хотите создать только счетчик посещений, обратитесь к этому руководству, оно идеально подходит для вас http://talkerscode.com/webtricks/create-a-simple-pageviews-counter-using-php-and-mysql.php

сначала вам нужно создать базу данных

CREATE TABLE `pageview` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`page` text NOT NULL,
`userip` text NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

// общий вид

CREATE TABLE `totalview` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`page` text NOT NULL,
`totalvisit` text NOT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

обновлять таблицу всякий раз, когда новый посетитель посещает веб-страницу

$user_ip=$_SERVER['REMOTE_ADDR'];

$check_ip = mysql_query("select userip from pageview where page='yourpage' and userip='$user_ip'");
if(mysql_num_rows($check_ip)>=1)
{

}
else
{
  $insertview = mysql_query("insert into pageview values('','yourpage','$user_ip')");

  $updateview = mysql_query("update totalview set totalvisit = totalvisit+1 where page='yourpage' ");
}

и это все

person asif    schedule 08.03.2016
comment
Ссылка предполагает, что код был обновлен в 2020 году. Функции mysql были удалены, начиная с версии 7. Таким образом, этот код больше не применим. - person Progrock; 09.05.2021
comment
Этот код использует IP-адрес пользователя в качестве идентификатора. И подсчитывает повторные посещения в итоговой таблице. Отметки времени не записываются. - person Progrock; 09.05.2021