当前位置: 首页 > 图文教程 > 网络编程 > PHP > 通过PHP+MYSQL实现 网站在线人数统计

PHP
php 清除网页病毒的方法
php 远程关机操作的代码
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
PHP 出现乱码和Sessions验证问题的解决方法!
php2html php生成静态页函数
中英文字符串翻转函数
php escape URL编码
PHP Google的translate API代码
php 文件状态缓存带来的问题
linux下 C语言对 php 扩展
php mssql 数据库分页SQL语句
php IP及IP段进行访问限制的代码
PHP 采集程序 常用函数
php 设计模式之 单例模式
php 设计模式之 工厂模式
php xml-rpc远程调用
php 获取完整url地址
PHP MSSQL 存储过程的方法
PDP Document 代码注释规范
PHP HTML代码串截取代码

通过PHP+MYSQL实现 网站在线人数统计


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 195 ::
收藏到网摘: n/a

网站在线人数的程序代码,后台有MySQL(和PHP搭配之最佳组合)数据库支持。可以直接统计出网站当前的在线人数。

首先是创建MySQL(和PHP搭配之最佳组合)数据库表。

可以使用的SQL语句。

CREATE TABLE useronline (
timestamp int(15) DEFAULT '0' NOT NULL,
ip varchar(40) NOT NULL,
file varchar(100) NOT NULL,
Prima(最完善的虚拟主机管理系统)RY KEY (timestamp),
KEY ip (ip),
KEY file (file)
);

      下面我们开始使用PHP脚本,首先定义MySQL(和PHP搭配之最佳组合)的信息。

$server = "localhost"; //你的服务器
$db_user = "root"; //你的MySQL(和PHP搭配之最佳组合)的用户名
$db_pass = "password"; //你的MySQL(和PHP搭配之最佳组合)的密码
$database = "users"; //表的名字


设置统计的时间(多少秒内在线人数)

$timeoutseconds = 300;

      取当前时间。

$timestamp = time();

      上面的完整代码:

<?php
$server = "localhost"; //your server
$db_user = "root"; //your MySQL(和PHP搭配之最佳组合) database username
$db_pass = "password"; //your MySQL(和PHP搭配之最佳组合) database password if any
$database = "users"; //the db name
$timeoutseconds = 300;//timeoutseconds limit
//get the current time
$timestamp = time();
//calculate the lowest timestamp allowed
$timeout = $timestamp-$timeoutseconds;
?>

连接MySQL(和PHP搭配之最佳组合)

 MySQL(和PHP搭配之最佳组合)_connect('localhost', 'username', 'password');


也允许使用变量形式。
      

MySQL(和PHP搭配之最佳组合)_connect($server, $db_user, $db_pass);

      如果MySQL(和PHP搭配之最佳组合)数据库没有密码的话可以使用下面代码连接(当然建议大家一定要设置好自己的密码,这样起码黑客得要解密啊)
MySQL(和PHP搭配之最佳组合)_connect($server, $db_user);

      查询数据库的代码:
MySQL(和PHP搭配之最佳组合)_db_query('database', 'query');


      我们只要有访客就要增加一条记录。

$insert = MySQL(和PHP搭配之最佳组合)_db_query($database, "INSERT INTO useronline VALUES
('$timestamp','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['PHP_SELF']."')");

      然后我们给出如果用户用错误信息的处理方式。

if(!($insert)) {
print "Useronline Insert Failed > ";
}

然后我们得实现当超过我们设置的时间我们就要删除该用户记录。
 

  $delete = MySQL(和PHP搭配之最佳组合)_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout");

      同样给出删除记录出错的处理。

if(!($delete)) {
print "Useronline Delete Failed > ";
}


      下面我们显示数据库中有多少个不同的IP

$result = MySQL(和PHP搭配之最佳组合)_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='".$_SERVER['PHP_SELF']."' ");


      我们使用MySQL(和PHP搭配之最佳组合)_num_rows(query);来统计用户,代码如下:

$user = MySQL(和PHP搭配之最佳组合)_num_rows($result);


      最后我们要关闭数据库。

MySQL(和PHP搭配之最佳组合)_close();


      显示在线的人数。

if($user == 1) {
print("1 user online\n");
} else {
print("$user users online\n");
}


最终把上面代码写成一个PHP文件如下。

<?php
//Put your basic server info here
$server = "localhost"; //normally localhost
$db_user = "root"; //your MySQL(和PHP搭配之最佳组合) database username
$db_pass = "password"; //your MySQL(和PHP搭配之最佳组合) database password
$database = "users";
$timeoutseconds = 300; //it will delete all people which haven't refreshed(so probbably are
// offline or inactive) in $timieoutseconds time (so it actually checks the people that are active in the last
// $timeoutseconds seconds)
//this is where PHP gets the time
$timestamp = time();
//counts the timeout, all people which have been seen last online in earlier than this timestamp, will get removed
$timeout = $timestamp-$timeoutseconds;
//connect to database
MySQL(和PHP搭配之最佳组合)_connect($server, $db_user);
//add the timestamp from the user to the online list
$insert = MySQL(和PHP搭配之最佳组合)_db_query($database, "INSERT INTO useronline VALUES
('$timestamp','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['PHP_SELF']."')");
if(!($insert)) {
print "Useronline Insert Failed > ";
}
//delete the peoples which haven't been online/active in the last $timeoutseconds seconds.
$delete = MySQL(和PHP搭配之最佳组合)_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout");
if(!($delete)) {
print "Useronline Delete Failed > ";
}
//select the amount of people online, all uniques, which are online on THIS page
$result = MySQL(和PHP搭配之最佳组合)_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='".$_SERVER['PHP_SELF']."' ");
if(!($result)) {
print "Useronline Select Error > ";
}
//Count the number of rows = the number of people online
$user = MySQL(和PHP搭配之最佳组合)_num_rows($result);
//spit out the results
MySQL(和PHP搭配之最佳组合)_close();
if($user == 1) {
print("1 user online\n");
} else {
print("$user users online\n");
}
?>