|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
可以在书上很方便地做标记,及时记下自己的心得体会。 在入手下手这篇文章时,作者假定读者已可以写出一个用户的登入认证法式.
----------------------------------------------------------
记数器可完成会见 web 页的总次数,但却不克不及得知一个时段中会见量的静态记录,上面就来引见若何写一个各个时段静态显示会见量的办法.
要记录会见量,起首就要在 mysql 内创立一个数据库,权且给这个数据库取名为 line,同时创立一个名为 line 的数据表,表内的字段分离为"用户名(name varchar(20)),工夫(time datetime)".固然读者也可依据需求增添数据表的字段.
创立好数据库后,就能够入手下手设计法式了,如今先理清一下思绪,要想显示会见量,固然数据库就必需要有纪录,我已假定读者有才能写一个用户登入法式了,所以向数据库添加记载可在登入法式假定为 login.php 里添加:
先给如今工夫付值:$time=date('Y-m-d H:i:s');
mysql_select_db(line);
mysql_query("insert into line (name,time) values('$name','$time')");
好了,如今每位登入的用户在数据库里都有了一个纪录,上面就来完成用户在线显示的法式 line.php:
<?
mysql_connect("local","","");
mysql_select_db(line);
$result=mysql_query("select * from line");
$num=mysql_numrows($result);
if (!empty($num)) {
echo "<table><tr><td>";
echo "如今在耳目数为:$num";
echo "</td></tr>";
for($i=0;$i<$num;$i++){
$name=mysql_result($result,$i,"name");
echo "<tr><td>用户:$name</td></tr>";
}
}
?>
下面这段法式已能显示一切在线的用户人数及各用户名,固然这个法式还很不完美.假如个中一个用户登出分开后,数据库就不该该有此用户的纪录所以,还得在登出法式假定为 logout.php 内加上删除功效:
mysql_select_db(line);
mysql_query("delete from line where name='$name'");
这时候一个根基的用户在线功效已完成,接上去持续在 line.php 内增添代码使功效加倍完美,起首咱们得划定用户在多长工夫没持续阅读 line.php 时就以为该用户已分开,这里给定一个工夫限制为 5 分钟,也就是说法式将显示从如今入手下手的前 5 分钟的用户情形,所以必需 line.php 内设置一个如今工夫告诉法式从这个工夫入手下手履行,然后完成法式履行时把数据库内纪录的工夫减去如今工夫大于 5 分钟的一切纪录删除,如许任何用户在履行 line.php 时,都能看到 5 分钟内的一切在线的用户,完成这个功效需求以下这个数据库语句:
delete from line where time<date_sub('$time',interval 5
minute)
然而个中还有一个成绩就是假如有个用户一向在一直地履行 line.php 超越 5 分钟以上时,法式必需得分辩出该用户并一向显示该用户,在这就得使用 cookie 来完成更新数据库的工夫纪录了,由于是登入认证的,所以会有个 cookie 来记住用户的材料的,假定这个纪录用户姓名的 cookie 变量为 $cookiename (详细的变量视 cookie 的设置而定),剩下的就很好办了,使用这个 cookie 变量完成数据库的修正:
update line set time='$time' where name='$cookiename'
上面来完美 line.php:
<?
//设置如今的工夫
$time=date('Y-m-d H:i:s');
mysql_connect("local","","");
mysql_select_db(line);
//更新用户的纪录
mysql_query("update line set time='$time' where name='$cookiename'");
//删除超越 5 分钟的用户纪录
mysql_query("delete from line where time<date_sub('$time',interval 5 minute)");
$result=mysql_query("select * from line");
$num=mysql_numrows($result);
if (!empty($num)) {
echo "<table><tr><td>";
echo "如今在耳目数为:$num";
echo "</td></tr>";
for($i=0;$i<$num;$i++){
$name=mysql_result($result,$i,"name");
echo "<tr><td>用户:$name</td></tr>";
}
}
?>
好用户在线显示功效完成. 转自:静态网制造指南 www.knowsky.com虽说不上很好,但至少一般的数据操作,再在原有的SQL语言的基础上,用得还是可以的。 |
|