1<?php /* BOT MONITOR PLUGIN PAGE VIEW SCRIPT */ 2 3/* parse the JSON payload */ 4$json = json_decode($_POST['pageview'], true); 5if (!$json) { 6 http_response_code(400); 7 die("Invalid JSON Data."); 8} 9 10// what is the session identifier? 11$sessionId = preg_replace('/[\x00-\x1F{};\"\']/', "\u{FFFD}", $json['id']) /* clean json parameter */ 12 ?? session_id() 13 ?? $_SERVER['REMOTE_ADDR']; 14 15// clean the page ID 16$pageId = preg_replace('/[\x00-\x1F{};\"\']/', "\u{FFFD}", $json['pg'] ?? ''); 17 18// clean the user-name 19$userName = preg_replace('/[\x00-\x1F\"]/', "\u{FFFD}", $json['u'] ?? ''); 20 21// check load time 22$loadTime = $json['lt'] ?? ''; 23if ($loadTime !== '' ) $loadTime = intval($loadTime); 24 25// clean the user agent string 26$agent = preg_replace('/[\x00-\x1F]/', "\u{FFFD}", $_SERVER['HTTP_USER_AGENT'] ?? ''); 27 28// clean the referer 29$referer = preg_replace('/[\x00-\x1F]/', "\u{FFFD}", $json['r'] ?? ''); 30 31 32/* build the resulting log line (ensure fixed column positions!) */ 33$logArr = Array( 34 $_SERVER['REMOTE_ADDR'] ?? '', /* remote IP */ 35 $pageId, /* DW Page ID */ 36 $sessionId, /* Session ID */ 37 $userName, /* DW User name (if logged in) */ 38 $loadTime, /* load time */ 39 $referer, /* Referrer URL */ 40 $agent /* User agent */ 41 // $json['lg'] ?? '', /* browser language */ 42 // $json['scr'] ?? '', /* Screen dimensions */ 43 // $json['tz'] ?? '', /* timzone offset */ 44 // $json['l'] ?? '', /* Accepted languages list */ 45 // $json['url'] ?? '', /* Full request URL */ 46 // $json['t'] ?? '' /* Page title */ 47); 48 49/* create the log line */ 50$filename = 'logs/' . gmdate('Y-m-d') . '.log.txt'; /* use server datetime */ 51$logline = gmdate('Y-m-d H:i:s'); 52foreach ($logArr as $val) { 53 $logline .= "\t" . $val; 54}; 55 56/* write the log line to the file */ 57$logfile = fopen($filename, 'a'); 58if (!$logfile) { 59 http_response_code(507); 60 die("Error: Unable to open log file. Please check file permissions."); 61} 62 63if (fwrite($logfile, $logline . "\n") === false) { 64 http_response_code(500); 65 fclose($logfile); 66 die("Error: Could not write to log file."); 67} 68fclose($logfile); 69 70/* send a 202 response */ 71http_response_code(202); 72echo "OK";