全部博文(921)
分类:
2007-04-12 02:27:35
其他:写得比较烂,有机会改下,主要是对数据库的设计没做好。同一IP不应每次都记录下来。因该给他个新字段IP_num,用来统计一个IP访问的次数。然后把所有的IP_num相加,等到总共的访问次数。个人觉得这样比较节约数据库。呵呵。有空看看别人的是怎么写的。可惜刚开始学的时候(我也菜鸟,到现在刚好学一个月)还看不懂。哈哈
*/
//-------------------------------------------------------------------------------
//以下为 判断用户IP在规定时间内是否存在记录
// 取得用户IP
$ip=$_SERVER['REMOTE_ADDR'];
$ip1 = getenv('HTTP_X_FORWARDED_FOR');
if (($ip1 != "") && ($ip1 != "unknown")) $ip=$ip1;
//连接数据库
$link = mysql_connect('localhost:6033', 'root', 'dclzyf') ;
// 选择数据库
mysql_select_db('dcl', $link) ;
//统计表counter中所有符合的记录
$sql = "SELECT * FROM `counter` WHERE '$ip'=ip ORDER BY `time_at` DESC LIMIT 1";
//用PHP发送一条读取表的SQL查询
$result = mysql_query($sql) ;
//从结果集中取得一行作为枚举数组(将$restlt的值以数组形式赋给$row)
$row = mysql_fetch_assoc($result) ;
//判断如果IP没有出现在数据库里的话执行
if (!$row)
{
//添加记录SQL语句
//$now = time();
$sql = "INSERT INTO `counter` ( `ip` , `time_at` ) VALUES ('$ip', NOW());";
//用PHP发送一条添加记录的SQL查询
$result = mysql_query($sql) ;
} else
{
//相减时间,用于测试(可以看到Array ( [0] => 10 ) 当到10秒的时候就自动添加记录)
$t = time() - date('U',strtotime($row['time_at']));
echo $t;
echo '
';
//如果时间差大于规定时间,则执行
if($t >= 10)
{
//用来测试,每次往数据库添加记录的时候都会显示此IP。
echo $ip.'
';
//添加记录SQL语句
$sql = "INSERT INTO `counter` ( `ip` , `time_at` ) VALUES ('$ip', NOW( ));";
//echo $sql.'
';
//用PHP发送一条添加记录的SQL查询
$result = mysql_query($sql) ;
}
}
//----------------------------------------------------------------------------------
//以下为 读取MYSQL中记录数
//读取表counter内容的SQL语句
$sql = "SELECT COUNT(*) FROM `counter`";
//用PHP发送一条读取表的SQL查询
$result = mysql_query($sql) ;
//从结果集中取得一行作为枚举数组
$row = mysql_fetch_row($result) ;
//清除查询结果
mysql_free_result($result) ;
//关闭数据库
mysql_close($link) ;
echo "到访人数为:$row[0]" ;
?>
//----------------------------------------------------------------------------------
//以下为 导出数据库的SQL语句
-- phpMyAdmin SQL Dump
-- version 2.8.0.1
--
--
-- 主机: localhost:6033
-- 生成日期: 2006 年 04 月 13 日 16:03
-- 服务器版本: 5.0.18
-- PHP 版本: 4.4.2
--
-- 数据库: `dcl`
--
-- --------------------------------------------------------
--
-- 表的结构 `counter`
--
CREATE TABLE `counter` (
`ip` varchar(15) NOT NULL,
`time_at` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- 导出表中的数据 `counter`
--
INSERT INTO `counter` (`ip`, `time_at`) VALUES ('127.0.0.1', '2006-04-06 18:28:35'),