Is there a simple script or piece of code I can add to my page to keep a log of every visitor, the date and time they hit the page and IP address?
And what would be the best way to do this... javascript, php, something else?
EDIT:
Ouch...
Here is what happened... When I went to my server with FileZilla there were all the domain names (about 20) I have being logged like my domain.com so I found the one I needed and checked the logs but it was mainly search engines.
But I just went back and happened to scroll down to stuff that was out of view and there were all the domain names again with www in front like www.mydomain.com and of course the logs in there are huge and have every single bit of info I need.
This happened because I found what I was looking for mydomain.com and of course I stopped looking. I didn't know or see there was a whole other set out of view... honest mistake.
I am still using that code because it is nice and small, the logs are freakin' huge and take hours to download and look at.
$line = date('Y-m-d H:i:s') . " - $_SERVER[REMOTE_ADDR]";
file_put_contents('visitors.log', $line . PHP_EOL, FILE_APPEND);
Consider also logging $_SERVER['REQUEST_URI']
or other interesting information, possibly in a more standard format as outlined by @Day.
<?php
// include this piece of code in every page call
// write in database row
$log = array('time' => time(), 'ip' => $_SERVER['REMOTE_ADDR'], 'url' => $_SERVER['REQUEST_URI']);
?>
The simplest piece of code to add to your page is no code at all. So might I suggest "something else"? Try using your webserver's built-in request logging facility instead of writing some custom PHP code.
Apache and many other webservers can produce logs in the Common Log Format (CLF) and there are many tools available to analyse such logs and draw pretty graphs for you (Webalizer, Awstats etc). A CLF log line looks like this which gives you all the information you asked for and more:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
See the appropriate bit of documentation for your webserver for how to configure logging and give it a whirl:
- Apache - access log
- Nginx - HttpLogModule
- Lighttpd - ModAccessLog
- IIS - custom logging
here is my little script to log ip addresses
dont forget to add the below after the /HEAD tag
also note to make this work it must be a PHP not HTML
<?php include ('log-ip.php') ?>
where ever you want it called from
"log-ip.php"
<?php
$iplogfile = 'logs/ip-address-mainsite.html';
$ipaddress = $_SERVER['REMOTE_ADDR'];
$webpage = $_SERVER['SCRIPT_NAME'];
$timestamp = date('d/m/Y h:i:s');
$browser = $_SERVER['HTTP_USER_AGENT'];
$fp = fopen($iplogfile, 'a+');
chmod($iplogfile, 0777);
fwrite($fp, '['.$timestamp.']: '.$ipaddress.' '.$webpage.' '.$browser. "\n<br><br>");
fclose($fp);
?>
and the resault is a nice web HTML log file
logs/ip-address-mainsite.html
<!DOCTYPE html><!-- HTML5 -->
<head>
<body bgcolor="#000000">
<title>NZ Quakes - Main Web Site Log</title>
</head>
<body>
<font color="#7FFF00">
<center>NZ Quakes - Main Web Site Log</center>
<font color="gold">
<br><center>
[01/04/2017 08:25:21]: 124.197.9.181 /index.php Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36
<br><br>
below is a picture of what it looks like.
what do you think about this i think its clean and simple sort of.
Most comprehensive - Apache's access log: Log Files -> Access Log @ httpd.apache.org