当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP+MYSQL实例:网站在线人数的程序代码

PHP
php 多线程上下文中安全写文件实现代码
PHP类的使用 实例代码讲解
用php实现让页面只能被百度gogole蜘蛛访问的方法
php 学习笔记
PHP编程过程中需要了解的this,self,parent的区别
php 操作excel文件的方法小结
使用PHP获取网络文件的实现代码
PHP 巧用数组降低程序的时间复杂度
php下将XML转换为数组
php 文件上传代码(限制jpg文件)
php 无极分类(递归)实现代码
PHP 采集获取指定网址的内容
PHP 将图片按创建时间进行分类存储的实现代码
PHP 存储文本换行实现方法
PHP 批量更新网页内容实现代码
用PHP查询搜索引擎排名位置的代码
用php实现的获取网页中的图片并保存到本地的代码
php实现首页链接查询 友情链接检查的代码
处理php自动反斜杠的函数代码
php实现的遍历文件夹下所有文件,编辑删除

PHP+MYSQL实例:网站在线人数的程序代码


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

PHP实例教程:网站在线人数的程序代码,后台有MYSQL数据库支持。可以直接统计出网站当前的在线人数。

首先是创建MYSQL数据库表。

可以使用的SQL语句。

以下为引用的内容:
CREATE TABLE useronline (
timestamp int(15) DEFAULT '0' NOT NULL,
ip varchar(40) NOT NULL,
file varchar(100) NOT NULL,
PRIMARY KEY (timestamp),
KEY ip (ip),
KEY file (file)
);

下面我们开始使用PHP脚本,首先定义MYSQL的信息。

$server = "localhost"; //你的服务器

$db_user = "root"; //你的mysql的用户名

$db_pass = "password"; //你的mysql的密码

$database = "users"; //表的名字

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

$timeoutseconds = 300;

取当前时间。

$timestamp = time();

上面的完整代码:

以下为引用的内容:
$insert = mysql_db_query($database, "INSERT INTO useronline VALUES
('$timestamp','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['PHP_SELF']."')");

连接mysql

mysql_connect('localhost', 'username', 'password');

也允许使用变量形式。

mysql_connect($server, $db_user, $db_pass);

如果mysql数据库没有密码的话可以使用下面代码连接(当然建议大家一定要设置好自己的密码,这样起码黑客得要解密啊)

mysql_connect($server, $db_user);

查询数据库的代码:

mysql_db_query('database', 'query');

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

以下为引用的内容:
$insert = mysql_db_query($database, "INSERT INTO useronline VALUES
('$timestamp','".$_SERVER['REMOTE_ADDR']."','".$_SERVER['PHP_SELF']."')");

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

以下为引用的内容:
if(!($insert)) {
print "Useronline Insert Failed > ";
}

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

$delete = mysql_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout");

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

以下为引用的内容:
if(!($delete)) {
print "Useronline Delete Failed > ";
}

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

$result = mysql_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='".$_SERVER['PHP_SELF']."' ");

我们使用

mysql_num_rows(query);

来统计用户,代码如下。

$user = mysql_num_rows($result);

最后我们要关闭数据库。

mysql_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 database username
$db_pass = "password"; //your MySQL 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_connect($server, $db_user);
//add the timestamp from the user to the online list
$insert = mysql_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_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_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_num_rows($result);
//spit out the results
mysql_close();
if($user == 1) {
print("1 user online\n");
} else {
print("$user users online\n");
}
?>