自己的站点经常被搜索引擎爬到,想知道搜索引擎和来访者都对哪些内容比较感兴趣,于是写了一个简单的日志记录"系统",来记录来访者的信息。
分为三个文件,record.php,log.php,conn.php
conn.php是数据库连接文件,调用该文件返回一个mysql的数据库读写接口;
log.php是后台,可以从这里看到记录在数据库中的内容;
record.php是记录访客用的脚本,在任意页面包含该脚本,即可实现对于来访者的记录。
代码如下:
conn.php:
<?php
#conn.php
#include this file to connect the database which you choose
#while database was connected,it will return a connect hundle "$con"
#then you could use this hundle to excute sql.
$dbhost = "localhost";#the database host(default localhost)
$dbuser = "xxx";#name of database user
$dbpswd = "xxx";#password of database user
$dbname = "xxx";#the tablename you want to save log
$con=mysql_connect($dbhost,$dbuser,$dbpswd);
if (!$con)
{
die(‘Could not connect: ‘.mysql_error());
}
mysql_select_db($dbname, $con);
?>
log.php
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<title>#</title>
</head>
<body>
<hr />
</body>
</html><?php
showlog();
function showlog()
{
include "conn.php";
#mysql_query(‘set names gb2312;‘);
$query="select * from record";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result))
{
echo "<b>".$rows[‘id‘]."</b> ";
echo "<b>".$rows[‘ip‘]." ".$rows[‘area‘]."</b><br /> ";
echo $rows[‘request‘]."<br />";
if($rows[‘source‘]!="")
{
echo "From:".$rows[‘source‘]."<br />";
}
echo $rows[‘useragent‘]."<br />";
echo $rows[‘userlang‘]."<br />";
echo "<b>".$rows[‘time‘]."</b>";
echo "<hr />";
}
mysql_free_result($result);
}?>
record.php
<?php
error_reporting(0);
date_default_timezone_set(‘PRC‘);
$ip = $_SERVER[‘REMOTE_ADDR‘];
$time = date(‘Y-m-d H:i:s‘);
$source = $_SERVER [‘HTTP_REFERER‘];
$user_agent = $_SERVER [‘HTTP_USER_AGENT‘];
$user_lang = $_SERVER [‘HTTP_ACCEPT_LANGUAGE‘];
$request = $_SERVER[‘SERVER_NAME‘].$_SERVER["REQUEST_URI"];
$area = ip_lookup();include "conn.php";
$sql="INSERT INTO `record`
(`ip` ,`source`,`request`,`useragent`,`userlang`,`area`,`time`)
VALUES (‘$ip‘,‘$source‘,‘$request‘,‘$user_agent‘,‘$user_lang‘,‘$area‘,‘$time‘);";
mysql_query($sql,$con);
mysql_close($con);#ip_lookup函数通过sina的ip查询接口用来获取ip地址对应的地区
function ip_lookup()
{
$ip = $_SERVER[‘REMOTE_ADDR‘];
$url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip;
$json = file_get_contents($url);
$json = json_decode($json);
return $json->{‘country‘}.$json->{‘province‘}.$json->{‘city‘}." ".$json->{‘isp‘};
}
?>
为了方便使用,还写了一个install.php来配置数据库。
install.php:
<?php
include "conn.php";$sql ="CREATE TABLE `record` (
`id` INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`ip` TEXT NOT NULL ,
`source` TEXT NOT NULL ,
`request` TEXT NOT NULL,
`useragent` TEXT NOT NULL,
`userlang` TEXT NOT NULL,
`area` TEXT NOT NULL,
`time` DATETIME NOT NULL
) ENGINE = MYISAM ";
if(mysql_query($sql,$con))
{
echo "Install Success!";
}
else
{
die(‘Could not connect: ‘.mysql_error());
}
mysql_close($con);?>
初学php,技术毕竟有限,很多想要的功能还没能加上去。