php 统计在线人数 根据IP判断哪个地方多少人, 也就是说...
为新民等地区用户提供了全套网页设计制作服务,及新民网站建设行业解决方案。主营业务为成都做网站、网站建设、新民网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
使用数据库,建立一个表,比如名字是online,至少有以下列:
name_ip 存放登录用户名,未登录的存放IP,char类型
url 存放每个页面的地址,char类型
last_time 存放刷新页面的最后时间,int类型
表的主键是:name_ip+url
每个页面一开始就要刷新这个表,使用的SQL是:
$name_ip='用户名或者IP';//你能搞定
$url=$_SERVER["PHP_SELF"];
$time=time();
$sql="replace delayed into online (name_ip,url,last_time) values ('$name_ip','$url',$time)";
mysql_query($sql);
获取某页面在线人数的查询是语句
$limit=time()-10*60;//10分钟内访问的认为在线,10分钟*60秒/分钟
$sql="select count(*) from online where url='$url' and last_time=$limit";
$res=mysql_query($sql);
list($online_count)=mysql_fetch_row($res);
mysql_free_result($res);
echo "本页面在线人数: $online_count";
一帆风顺吉星到 万事如意福临门 财源广进
连接数据库都会了,查询出来也会吧?参考;
$query = "select * from table ";
$i=0;
if ($result = mysqli_query($link, $query)) {
while ($finfo = mysqli_fetch_field($result)) {
if($ip==$finfo-ip)
{
$i=1;
}
}
if($i==1)
{
echo "1";
}
else{
echo "0";
}
mysqli_free_result($result);
}
mysqli_close($link);
好,分我要了,你需求是来路ip记录在ip.txt里,countdata.txt是访问次数对吧。但是你的需求我没看明白,ip.txt仅仅是用来存贮最后访问ip,而不是全部访问ip吗?那么countdata.txt也没啥意义了,仅仅是统计页面打开次数而已了。理解的有问题吗?
我的理解是是ip.txt存放所有ip地址,countdata.txt里存放ip和该ip对应的点击次数。其实也就需要countdata.txt一个就可以了,如果有新ip,存入,该ip访问次数+1,如果已存在改ip,ip访问次数+1。
如果只是存贮最后访问ip和总访问次数,那太简单了。等你回复,确定需求后给代码
读取LOG,遍历,前三段作为数组键,匹配到一次,对应键值就累加。
示例:
foreach($log as $val) {
if(in_array($val, array_keys($array))) $array['192.168.1']++;
}
这只是一个思路哦,$val如果192.168.1.12要作一下处理,取前三段,不然就没法匹配了,以上代码供参考,希望能帮助到您。
?php
session_start();
if(!isset($_SESSION['ip'])){
$count = file_get_contents('count');
file_put_contents('count',intval($count)+1);
$_SESSION['ip'] = 1;
}
?
不需要用到数据库、因为你只统计一个访问量