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

У меня есть код ниже его вставки, когда пользователь открывает страницу, и когда обновлять ее,,, я хочу обновить таблицу посещений setTimeTime=$ время, когда пользователь покидает страницу, нажав любую ссылку внутри страницы, которая перемещается на другую страницу или нажмите X или нажмите 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"];
}

4 ответа

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

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

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

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

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

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

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

Если вы хотите создать только счетчик посещений, обратитесь к этому учебнику, который идеально подходит для вас. 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

// totalview

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' ");
}

и это все

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

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

Делайте 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 секунды, если вам нужно быть точным

Другие вопросы по тегам