Toplam kullanıcılar üzerinde javascript devre dışı bırakılmış sitemi kaç gerçek kullanıcının ziyaret ettiğine dair güvenilir istatistikler elde etmek için çözümümü eklemek istiyorum. Kontrol, aşağıdaki avantajlarla birlikte her oturumda yalnızca bir kez yapılır:
- 100 sayfayı veya sadece 1'i ziyaret eden kullanıcılar 1'er adet sayılır. Bu, sayfalara değil tek kullanıcılara odaklanmaya izin verir.
- Yine de sayfa akışını, yapısını veya anlambilimini bozmaz
- Kullanıcı aracısı günlüğe kaydedilebilir. Bu, botları, genellikle JS devre dışı bırakılan google bot ve bing bot gibi istatistiklerden hariç tutmaya izin verir! Ayrıca IP, zaman vb.
- Oturum başına sadece bir kontrol (minimum aşırı yük)
Kodum ajax ile PHP, mysql ve jquery kullanıyor ancak diğer dillere uyarlanabilir:
DB'nizde şöyle bir tablo oluşturun:
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 () veya eşdeğerini (jquery gereklidir) kullandıktan sonra bunu her sayfaya ekleyin:
<? 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 sayfasını şu şekilde oluşturun:
<?
include_once("[DB connection file].php");
mysql_query("UPDATE log_JS SET JS_ON = 1 WHERE session_id = '" . mysql_real_escape_string(session_id()) . "'");