query($my_ip_sql); $my_ip_nums = $my_ip_qry->num_rows; if($my_ip_nums>0){ // do not add } else { function getBrowserAndOS($userAgent) { // Default values $browserName = 'Unknown'; $osName = 'Unknown'; // Detect browser if (preg_match('/Chrome/i', $userAgent)) { $browserName = 'Chrome'; } elseif (preg_match('/Safari/i', $userAgent) && !preg_match('/Chrome/i', $userAgent)) { $browserName = 'Safari'; } elseif (preg_match('/Firefox/i', $userAgent)) { $browserName = 'Firefox'; } elseif (preg_match('/MSIE/i', $userAgent) || preg_match('/Trident/i', $userAgent)) { $browserName = 'Internet Explorer'; } elseif (preg_match('/Edge/i', $userAgent)) { $browserName = 'Edge'; } // Detect OS if (preg_match('/Win/i', $userAgent)) { $osName = 'Windows'; } elseif (preg_match('/Mac/i', $userAgent)) { $osName = 'MacOS'; } elseif (preg_match('/X11/i', $userAgent)) { $osName = 'UNIX'; } elseif (preg_match('/Linux/i', $userAgent)) { $osName = 'Linux'; } return array('browser' => $browserName, 'os' => $osName); } // Get the user agent from the HTTP headers $user_agent = $_SERVER['HTTP_USER_AGENT']; // Get browser and OS information $info = getBrowserAndOS($user_agent); $browser = $info['browser']; $os = $info['os']; // Determine the correct client IP address if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) { // Takes the first IP from the X-Forwarded-For header if there are multiple $ips = explode(',', $_SERVER["HTTP_X_FORWARDED_FOR"]); $client_ip_address = trim($ips[0]); } else { $client_ip_address = $_SERVER['REMOTE_ADDR']; } function getABTestVariant() { // Check if a user session exists if (session_status() == PHP_SESSION_NONE) { session_start(); } // If the user doesn't have a variant assigned, assign one if (!isset($_SESSION['ab_test_variant'])) { // Randomly assign 'A' or 'B' $_SESSION['ab_test_variant'] = (rand(0, 1) == 0) ? 'A' : 'B'; } return $_SESSION['ab_test_variant']; } // Determine the variant for the current user $variant = getABTestVariant(); $session_id = session_id(); // Other parts of your script $analytics_bots_sql = "SELECT * FROM `analytics_bots_tbl` WHERE `agent`='$user_agent'"; $analytics_bots_qry = $con->query($analytics_bots_sql); $analytics_bots_nums = $analytics_bots_qry->num_rows; if($analytics_bots_nums < 1){ $page_request_scheme = $_SERVER["REQUEST_SCHEME"]; $page_host = $_SERVER['HTTP_HOST']; $page_self = $_SERVER["PHP_SELF"]; $page_query = $_SERVER["QUERY_STRING"]; $page_construct = $page_request_scheme . '://' . $page_host . $page_self . '?' . $page_query; $year = gmdate('Y', $now); $month = gmdate('n', $now); $day = gmdate('j', $now); $hour = gmdate('G', $now); // not BST friendly $analytics_sql = "SELECT * FROM `analytics_tbl` WHERE `ip_address`='$client_ip_address' LIMIT 1"; $analytics_qry = $con->query($analytics_sql); $analytics_nums = $analytics_qry->num_rows; if($analytics_nums < 1){ $details = json_decode(file_get_contents("https://ipinfo.io/{$client_ip_address}/json")); $ip_city = $details->city; $ip_country = $details->country; $ip_host = $details->org; } else { $analytics_rst = $analytics_qry->fetch_assoc(); $ip_city = $analytics_rst['ip_city']; $ip_country = $analytics_rst['ip_country']; $ip_host = $analytics_rst['ip_host']; } if(end(explode('.',$page_query))!='png'&&end(explode('.',$page_query))!='webp'&&end(explode('.',$page_query))!='ico'){ if(!isset($_COOKIE['tracking'])){ if(isset($_SERVER['HTTP_REFERER'])){ $page_referer = $_SERVER['HTTP_REFERER']; } else { $page_referer = ''; } $sql = "INSERT INTO `analytics_tbl`(`referer`, `ip_address`, `ip_host`, `ip_city`, `ip_country`, `agent`, `page`, `host`, `site`, `query`, `timestamp`, `year`, `month`, `day`, `hour`, `bot`,`browser`,`os`,`cookie_id`) VALUES ('$page_referer','$client_ip_address','$ip_host','$ip_city','$ip_country','$user_agent','$page_construct','$page_host','$page_self','$page_query','$now','$year','$month','$day','$hour','0','$browser','$os','$session_id')"; $con->query($sql); $limit = $now + (60 * 15); $analytics_session_sql = "SELECT * FROM `analytics_sessions_tbl` WHERE `ip`='$client_ip_address' AND `agent`='$user_agent' AND `timestamp`<'$limit'"; // echo $analytics_session_sql; $analytics_session_qry = $con->query($analytics_session_sql); $analytics_session_nums = $analytics_session_qry->num_rows; if($analytics_session_nums<1){ $con->query("INSERT INTO `analytics_sessions_tbl`(`ID`, `ip`, `agent`, `timestamp`) VALUES ('','$client_ip_address','$user_agent','$now')"); } // send ID to js for more browser info wxh $inserted_id = $con->insert_id; } else { // tracking cookie exists // send more info } } } } ?>