ฉันต้องการเพิ่มโซลูชันของฉันเพื่อรับสถิติที่เชื่อถือได้เกี่ยวกับจำนวนผู้ใช้จริงที่เข้าชมไซต์ของฉันโดยที่ปิดการใช้งานจาวาสคริปต์ในจำนวนผู้ใช้ทั้งหมด การตรวจสอบจะทำเพียงครั้งเดียวต่อเซสชันที่มีประโยชน์เหล่านี้:
- ผู้ใช้ที่เข้าชม 100 หน้าหรือเพียง 1 รายการจะถูกนับ 1 หน้า สิ่งนี้ทำให้สามารถมุ่งเน้นที่ผู้ใช้คนเดียวไม่ใช่หน้าเว็บ
- ไม่ทำลายโฟลว์ของหน้าโครงสร้างหรือความหมายในอีกต่อไป
- สามารถบันทึกตัวแทนผู้ใช้ อนุญาตให้ยกเว้นบ็อตจากสถิติเช่น google bot และ bing bot ซึ่งโดยปกติจะปิดใช้งาน JS! ยังสามารถบันทึก IP, เวลา ฯลฯ ...
- ตรวจสอบเพียงครั้งเดียวต่อเซสชัน (ใช้งานน้อยเกินไป)
รหัสของฉันใช้ PHP, mysql และ jquery กับ ajax แต่สามารถปรับให้เหมาะกับภาษาอื่นได้:
สร้างตารางในฐานข้อมูลของคุณเช่นนี้:
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()) . "'");