with GET 'show=this' - this way the script can be included in .html files also. EXAMPLE USAGE CODE OPTIONAL .HTACCESS .PHP REMOVAL Add to .htaccess file # PHP REMOVAL - HUP.php becomes HUP # EXAMPLE : HUP?url=http... over HUP.php?url= # RewriteRule ^([^.?]+)$ %{REQUEST_URI}.php [L] # # RETURN 404 IF REQUEST IS .PHP # RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$" RewriteRule .* - [L,R=404] # IF YOU USE HTACCESS, This method sometimes has unexpected results when used with other .htaccess RewriteRule's also the new example usage would become, EXAMPLE USAGE CODE For more .htaccess tweaks https://pastebin.com/6FxeZwna You MUST have read/write permissions on files Script refined for html support by : Zillinium : http://facebook.com/Zillinium Original PHP Script (simPHP) by Ajay: me@ajay.ga ----------------------------*/ /*----------CONFIG----------*/ function realIp() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; } $ip = realIp(); // Relative URL of text file that holds hit info: $lf_name = "counter.txt"; // Save new log file each month // 0 = No // 1 = Yes $monthly = 0; // Path to store old files: // Default for June, 2012: // oldfiles/6-12.txt $monthly_path = "oldfiles"; // Count unique hits or total hits: // 0 = Total hits // 1 = Unique hits // 2 = Both unique and total $type = 2; // Text to display // before total hits $beforeTotalText = "Load : "; // Before unique hits $beforeUniqueText = "Visitor : "; // Before current user IP $beforeIP = "You are : "; // Display hits on this page: // 0 = No // 1 = Yes $display = 1; // Only change this if you are recording both values // Separator for unique and total hits display - use HTML tags! (line break is default) $separator = "
"; // Default would output: // Visits: 10 // Unique Visits: 10 /*--------------------------*/ /*--------BEGIN CODE--------*/ $log_file = dirname(__FILE__) . '/' . $lf_name; // Check for "?display=true" in URL if ($_GET['display'] == "true") { // Show include() info die("
<? include(\"" . dirname(__FILE__) . '/' . basename(__FILE__) . "\"); ?>
"); } else { // Get visitor IP $uIP = realIp(); // Check for "hits.txt" file if (file_exists($log_file)) { // Get contents of log file $log = file_get_contents($log_file); if ($monthly) { // Check if today is first day of month // Also check if prev month log file exists already $prev_name = $monthly_path . '/' . date("n-Y", strtotime("-1 month")) . '.txt'; if (date('j') == 1 && !file_exists($prev_name)) { // If it is first day of month, // move previous log file to subdir and create new file // Ensure that monthly dir exists if (!file_exists($monthly_path)) { mkdir($monthly_path); } copy($log_file, $prev_name); // Write new data based on config if ($type == 0) { // Total hits $toWrite = "1"; $info = $beforeTotalText . "1"; } else if ($type == 1) { // Unique hits $toWrite = "1;" . $uIP . ","; $info = $beforeUniqueText . "1"; } else if ($type == 2) { // Unique and total $toWrite = "1;1;" . $uIP . ","; $info = $beforeTotalText . "1" . $separator . $beforeUniqueText . "1" . $separator . $beforeIP . $ip; } write_logfile($toWrite, $info); } else { // Still same month as before, so just increment counters // What to do depends on type from config if ($type == 0) { // Total hits // Create info to write to log file and info to show $toWrite = intval($log) + 1; $info = $beforeTotalText . $toWrite; } else if ($type == 1) { // Separate log file into hits and IPs $hits = reset(explode(";", $log)); $IPs = end(explode(";", $log)); $IPArray = explode(",", $IPs); // Check for visitor IP in list of IPs if (array_search($uIP, $IPArray, true) === false) { // IP doesnt' exist so increase hits and include IP $hits = intval($hits) + 1; $toWrite = $hits . ";" . $IPs . $uIP . ","; } else { // If IP exists don't change anything $toWrite = $log; } // Info to show $info = $beforeUniqueText . $hits; } else if ($type == 2) { // Both total hits and unique hits // Separate log file into regular hits, unique hits, and IPs $pieces = explode(";", $log); $totalHits = $pieces[0]; $uniqueHits = $pieces[1]; $IPs = $pieces[2]; $IPArray = explode(",", $IPs); // Always increase regular hits, regardless of IP $totalHits = intval($totalHits) + 1; // Search for visitor IP in list of IPs if (array_search($uIP, $IPArray, true) === false) { // IP doesn't exist so increase unique hits and append IP $uniqueHits = intval($uniqueHits) + 1; $toWrite = $totalHits . ";" . $uniqueHits . ";" . $IPs . $uIP . ","; } else { // If IP already exists just keep unique hits unchanged $toWrite = $totalHits . ";" . $uniqueHits . ";" . $IPs; } // Info to show $info = $beforeTotalText . $totalHits . $separator . $beforeUniqueText . $uniqueHits . $separator . $beforeIP . $ip; } write_logfile($toWrite, $info); } } else { // What to do depends on type from config if ($type == 0) { // Total hits // Create info to write to log file and info to show $toWrite = intval($log) + 1; $info = $beforeTotalText . $toWrite; } else if ($type == 1) { // Separate log file into hits and IPs $hits = reset(explode(";", $log)); $IPs = end(explode(";", $log)); $IPArray = explode(",", $IPs); // Check for visitor IP in list of IPs if (array_search($uIP, $IPArray, true) === false) { // IP doesnt' exist so increase hits and include IP $hits = intval($hits) + 1; $toWrite = $hits . ";" . $IPs . $uIP . ","; } else { // If IP exists don't change anything $toWrite = $log; } // Info to show $info = $beforeUniqueText . $hits; } else if ($type == 2) { // Both total hits and unique hits // Separate log file into regular hits, unique hits, and IPs $pieces = explode(";", $log); $totalHits = $pieces[0]; $uniqueHits = $pieces[1]; $IPs = $pieces[2]; $IPArray = explode(",", $IPs); // Always increase regular hits, regardless of IP $totalHits = intval($totalHits) + 1; // Search for visitor IP in list of IPs if (array_search($uIP, $IPArray, true) === false) { // IP doesn't exist so increase unique hits and append IP $uniqueHits = intval($uniqueHits) + 1; $toWrite = $totalHits . ";" . $uniqueHits . ";" . $IPs . $uIP . ","; } else { // If IP already exists just keep unique hits unchanged $toWrite = $totalHits . ";" . $uniqueHits . ";" . $IPs; } // Info to show $info = $beforeTotalText . $totalHits . $separator . $beforeUniqueText . $uniqueHits . $separator . $beforeIP . $ip; } write_logfile($toWrite, $info); } } else { // If "hits.txt" doesn't exist, create it $fp = fopen($log_file, "w"); fclose($fp); // Write file according to config above if ($type == 0) { $toWrite = "1"; $info = $beforeTotxalText . "1"; } else if ($type == 1) { $toWrite = "1;" . $uIP . ","; $info = $beforeUniqueText . "1"; } else if ($type == 2) { $toWrite = "1;1;" . $uIP . ","; $info = $beforeTotalText . "1" . $separator . $beforeUniqueText . "1" . $separator . $beforeIP . $ip; } write_logfile($toWrite, $info); } } /** * Writes given data to the logfile and echoes data if the option * says so in config * Requires: A string of data to write to the file and a string * of data to print */ function write_logfile($data, $output) { global $log_file; // Put $toWrite in log file file_put_contents($log_file, $data); // Display info if is set in config if ($display == 1) { echo $output; } } $outCode = '
'. $info . '
'; if(isset($_GET['show']) && $_GET['show']=='this') $outCode = "document.write('$outCode');"; echo $outCode; ?>