I decided to setup my 404 page to log the wrong addresses people are attempting to use on my site to a mysql database. A simple version of the script below, add it to your 404 page and input the right login and table details.
< ?php
mysql_connect("localhost", "user", "") or die("Cannot connect to DB!");
mysql_select_db("site") or die("Cannot select DB!");
$ip = getRealIpAddr();
$address = mysql_real_escape_string($_SERVER['REQUEST_URI']);
$insert = "INSERT INTO `404_log` (`address`, `ip`) VALUES ('$address' , '$ip')";
mysql_query($insert);
function getRealIpAddr(){
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
?>
getRealIpAddr function from here
Some SQL to setup the table.
CREATE TABLE IF NOT EXISTS `404_log` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `address` varchar(500) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL, `ip` varchar(20) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL, `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;






