전체 사용자에 대해 자바 스크립트를 비활성화 한 상태에서 실제 사용자가 얼마나 많은 사이트를 방문했는지에 대한 안정적인 통계를 얻으려면 솔루션을 추가하고 싶습니다. 확인은 다음과 같은 이점이있는 세션 당 한 번만 수행됩니다.
- 100 페이지를 방문하거나 1 개만 방문한 사용자는 각각 1 개로 계산됩니다. 이를 통해 페이지가 아닌 단일 사용자에게 집중할 수 있습니다.
- 어쨌든 페이지 흐름, 구조 또는 의미를 손상시키지 않습니다.
- 사용자 에이전트를 기록 할 수 있습니다. 이를 통해 일반적으로 JS가 비활성화 된 google bot 및 bing bot과 같은 통계에서 봇을 제외 할 수 있습니다! IP, 시간 등을 기록 할 수도 있습니다.
- 세션 당 한 번만 확인 (최소 과부하)
내 코드는 PHP, mysql 및 jquery를 ajax와 함께 사용하지만 다른 언어로 조정할 수 있습니다.
다음과 같이 DB에 테이블을 만듭니다.
CREATE TABLE IF NOT EXISTS `log_JS` (
`logJS_id` int(11) NOT NULL AUTO_INCREMENT,
`data_ins` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`session_id` varchar(50) NOT NULL,
`JS_ON` tinyint(1) NOT NULL DEFAULT '0',
`agent` varchar(255) DEFAULT NULL,
PRIMARY KEY (`logJS_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
session_start () 또는 동등한 항목 (jquery 필요)을 사용한 후 모든 페이지에 이것을 추가하십시오.
<? if (!isset($_SESSION["JSTest"]))
{
mysql_query("INSERT INTO log_JS (session_id, agent) VALUES ('" . mysql_real_escape_string(session_id()) . "', '" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']). "')");
$_SESSION["JSTest"] = 1; // One time per session
?>
<script type="text/javascript">
$(document).ready(function() { $.get('JSOK.php'); });
</script>
<?
}
?>
다음과 같이 JSOK.php 페이지를 작성하십시오.
<?
include_once("[DB connection file].php");
mysql_query("UPDATE log_JS SET JS_ON = 1 WHERE session_id = '" . mysql_real_escape_string(session_id()) . "'");