【转】 (原创)用PHP和MySQL编一个网页计数器
2011年11月24日
概要:在这篇教程中,我们将要学习如何建立一个简单的计数器程序。我们将要建立一个普通的网页浏览计数器,一个统计浏览过此网页的IP总数计数器,一个在线总人数计数器,以及正在浏览当前页面的总人数。可以说包括了所有的计数器的编程。
Step 1: db.sql
首先让我来写建立一个数据库,这对于我们后面的学习是很有帮助的。我们将要建立2个Table。
第一个是stats table,用来显示网页浏览数量和唯一IP地址浏览过的数量。第二个usersonline table,用来显示在线的用户。
如果你有兴趣看看MySQL的语法教程,可以点击这里来学习:点击学习MySQL
代码是这样的:
CREATE TABLE `stats` (
`ip` varchar(15) NOT NULL default '',
`visits` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `useronline` (
`timestamp` int(15) NOT NULL default '0',
`ip` varchar(40) NOT NULL default '',
`file` varchar(100) NOT NULL default '',
PRIMARY KEY (`timestamp`),
KEY `ip` (`ip`),
KEY `file` (`file`)
) TYPE=MyISAM;
把这些代码保存在db.sql的文件里面。
Step 2: config.php
这个文件是用来帮助存储所有的数据库连接信息的,也就是说这里存储了所有网页中想连接数据库时候公用的信息,这样我们就不必在其他的网页中每次都要定义这些语句了,每次在其他的文件中包括上这个文件就可以了。
代码如下:
Step 3: stats.php
好,现在我们就要学习写一下目前网页的浏览数量和唯一这个IP地址的浏览数量。
首先我们要建立网页和数据库的连接,正如我们在Step 2中定义的,所以我们只要引用那个文件就可以了。
代码如下:
Error。
$count = mysql_query("SELECT * FROM $tbl_name") or die(mysql_error());
现在我们就该计算stats Table的总行数并且存储它为 $unique(这个是纪录了不同的IP地址访问的总数)。这个基本上同我们前面的Else语句的功能差不多。如果一个用户的IP 地址已经在我们的数据库上出现过了,那么在visits field会加1;就需要在数据库里面插入访问者的IP地址到ip field,并且visits field 记为1。
代码如下:
$unique = mysql_num_rows($count);
现在我们得到$visits(这个纪录了所有的访问总数)访问的总数。我们可以用一个While 循环。
代码如下:
while ($vi = mysql_fetch_array($count)) {
$visits = $visits + $vi['visits'];
}
好了,现在我们做完了,需要把结果$visits和 $unique显示在网页上。
代码如下:
echo "Total Hits: " . $visits . "";
echo "Unique Hits: " . $unique;
?>
Step 4: useronline.php 很多人也许会认为这样很难,但是相比前面的stats.php 文件,这个文件已经容易多了。在这个文件中,我们同要也是要获得数据库的信息,所以我们只要引用了前面的config.php 就可以了。 代码如下: MySQL Error: ".mysql_error());
然后我们要删除掉那些超过了我们设定$timeoutseconds的用户,可能一些用户忘记关了这个网页,而导致急速增加。
代码如下: mysql_query("delete from useronline where timestampMySQL Error: ".mysql_error()); 此时,我们便可以知道在线的所有人数了。
代码如下:
$result = mysql_query("select distinct ip from useronline") or die("MySQL Error: ".mysql_error());
$user = mysql_num_rows($result);
我们前面得到了所有在线人数,我们现在要知道目前这个网页上有多少人,我们这样做。
代码如下:
$resulta = mysql_query("select distinct ip from useronline where file='$PHP_SELF'") or die("MySQL Error: ".mysql_error());
$usera = mysql_num_rows($resulta);
mysql_close();
最后显示所有信息。
// Show all users online
if ($user==1) {
echo"Users Online: $user";
}
else {
echo"Users Online: $user";
}
// Show users on this very page
if ($usera==1) {
echo"
Viewing This Page: $user";
}
else {
echo"Viewing This Page: $user";
}
?>
Step 5: Displaying
最后一步是非常简单了,只要用我们的Index.html或者是其他各式的Index来引用我们刚才编写的两个.php文件即可。
代码如下:
//Display general stats
//Display online users
如果看后依然找不到路子,可以给我发邮件kxw0908@gmail.com.
注,本来我想把我做的文件都上传到自己的网站上,但是那个免费的Web Hosting 不支持上传文件,所以只好作罢了,不过大家可以访问我的个人网站,看看左上角的网页计数器是如何工作的。哈哈。
发表评论
-
2011年春季消费者行为分析1
2012-01-20 11:28 15862011年春季消费者行为分析1 2011年04月21日 ... -
八年级英语外研版下第二学期英语阶段测试卷(Module 5)
2012-01-20 11:28 657八年级英语外研版下第二学期英语阶段测试卷(Module 5) ... -
关于……留着以后用
2012-01-20 11:28 548关于……留着以后用 57 ... -
Hypertable 简介 (一个 C++ 的Bigtable开源实现)
2012-01-20 11:28 737Hypertable 简介 (一个 C++ 的Bigtable ... -
[转载]生命科学谁领风骚?刘实世界第一的重大发现
2012-01-20 11:27 569[转载]生命科学谁领风骚?刘实世界第一的重大发现 12小时前 ... -
Memcached 协议 中英文对照(一)
2012-01-19 16:07 552Memcached 协议 中英文对 ... -
Linux PowerPC I2C驱动之 I2C设备层的注册过程
2012-01-19 16:07 1012Linux PowerPC I2C驱动之 I2C设备层的注册过 ... -
herve leger sale grj lkh rndm eba
2012-01-19 16:07 500herve leger sale grj lkh rndm e ... -
爪哇版的加解密小程序
2012-01-19 16:07 607爪哇版的加解密小程序 2012年01月16日 //要先安 ... -
2011-9-7
2012-01-17 05:58 5192011-9-7 2011年09月07日 国税总局:9月 ... -
贾樟柯赵涛宣布结婚:8月已领证 威尼斯拍婚照
2012-01-17 05:58 608贾樟柯赵涛宣布结婚:8 ... -
2011-9-12
2012-01-17 05:58 6892011-9-12 2011年09月12日 THUGST ... -
男子应聘被老板骗至医院迷昏割肾1
2012-01-17 05:58 608男子应聘被老板骗至医院迷昏割肾1 2011年09月21日 ... -
男子应聘被老板骗至医院迷昏割肾2
2012-01-17 05:58 485男子应聘被老板骗至医 ... -
中秋节
2012-01-16 04:45 503中秋节 2011年12月06日 中秋 ... -
外仁内圣,以借得天下,以情御英雄
2012-01-16 04:45 941外仁内圣,以借得天下,以情御英雄 2011年12月09日 ... -
说"书"
2012-01-16 04:45 425说"书" 2011年12月11日 ... -
春秋战国时期私学的发展
2012-01-16 04:45 1336春秋战国时期私学的发展 2011年12月08日 ... -
子微枯稿
2012-01-16 04:45 559子微枯稿 2011年11月28日 《愁何》 其一 ...
相关推荐
原创的一个PHP论坛源码,PHP+MYSQL,数据库在打的包里面,需要的TX可以看看 用来做课程设计或者毕业设计挺好的
PHP+MYSQL的版本 功 能: 1.多达20种记数器样式可以选择,总有一款适合你! 2.可以自由设置计数器的数字和计数起始时间。 3.防刷新页面,还可以显示来访客的来源IP地址和来源页面信息。 4.计数器可以设置为隐藏,...
PHP实现图片计数器 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。...本案例主要使用PHP 7中的文件操作函数对文件内容进行写入和读取,从而实现图片计数器的制作。
问题:我不知道MySQL数据库是什么,或者我是否有一个数据库!解决方案:MySQL数据库是存储数据的简单方式和位置。您可以询问您的网站主机是否有(如果有,您的用户名、密码和数据库名称是什么)。如果您没有MySQL...
《PHP+MySQL动态网站开发》详细介绍了PHP的脚本语言基础、运行环境和PHP面向对象编程(包括MySQL数据库)的知识。全书共19章,内容分为理论部分和实战部分。理论部分包括PHP技术概述和基本语法、字符串和正则表达式、...
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码...
1.将util包下的dataSource.properties中的username和password改成自己MySQL的登录名和密码将util包下的dataSource.properties中的username和password改成自己...2.将TXT文本中的代码复制到本机的mysql中运行一次即可
我们不排除系统有问题,因为本人也是刚刚学习php,对php需要有一个熟悉的过程。 然而很多网友都和我要php版本的程序,所以我暂时先开发一套给大家测试用。 数据库使用 db.sql建立,数据库相关信息请修改 sys_conf.in...
书《PHP5+MYSQL网页系统开发设计》自带的光盘,很有用。
php动态网页作业 大学生网页 php+mysql
第10章和第11章是介绍了PHP应用的几个例子,其中第10章是介绍一个商业网站的示例,用以说明PHP和MySQL在商业网站的一般应用,第11章则介绍了几个在网站中常见到的一些应用程序,如计数器、留言板和讨论区等。
php大作业 php+mysql成绩管理系统,基于PHP和MySQL数据库实现的学生成绩管理系统
本论文从网站设计的基本原理出发,使用php+mysql技术,PHP是一个类似微软ASP的服务器端的嵌入式超文本处理语言,是建立动态网站的强大工具。MySQL是一个真正的多用户、多线程SQL数据库服务器。MySQL是以一个客户机/...
前段时间学习PHP 下了个PHP和MySQL Web开发(原书第4版)高清版,有将近200M,PDF文档不过没有书签,花了一天的时间将书签添加上去了,精确到了三级目录。 我没有权限上传200M的文件,所以放到百度空间了,下载后是...
一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL ...本案例使用PHP 7中的PDO数据对象对MySQL数据库进行查询和插入操作,从而实现用户的登录和注册,同时用户登录成功后,通过Session实现用户状态保持。
本书将PHP开发与MySQL应用相结合,分别对PHP和MySQL做了深入浅出的分析,不仅介绍PHP和MySQL的一般概念,而且对PHP和MySQL的Web应用做了较全面的阐述,并包括几个经典且实用的例子。 本书是第4版,经过了全面的更新...
php+mysql+html实例php+mysql+html实例php+mysql+html实例php+mysql+html实例php+mysql+html实例php+mysql+html实例php+mysql+html实例php+mysql+html实例php+mysql+html实例
使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 Dbmover for Mysql to Oracle 可以定时,定周期自动运行。 支持 Oracle 8i 以后...
- 基于django+hitcount的网页计数器 所需环境 - python - pycharm或vscode - django Django简介 Django 是一个开源的、基于 Python 的高级 Web 应用框架,它遵循模型-视图-模板(Model-View-Template, MVT)设计...
PHP+MYSQL动态网站开发,关于php动态网站设计基础知识