简单易用的计数器(数据库)


Posted in PHP onOctober 09, 2006

用法
<?
include("counter.php");
Counter(__FILE__);//为文件增加一个计数
if($PHP_SELF=="/index.php")
{
$count=Counter("INDEX_COUNT");//为首页增加一个计数
}
else
{
$count=Counter("INDEX_COUNT","",0);//取得首页计数
}
echo "你是第$count个访问者";
?>
--------counter.php-----------
<?
if(!isset($PHP_INCLUDE_COUNTER_PHP))
{$PHP_INCLUDE_COUNTER_PHP=__FILE;

$counter_error_state=0;
$counter_error_msg="";
function Counter($file,$query="",$add=1)
{
        $db_name="database";
        $db_user="username";
        $db_pass="password";
        $db_table="counter";

        if(empty($file))
        {
                $counter_error_state=-100;
                $counter_error_msg="缺少第一个参数或参数为空";
                return -100;
        }
        global $PHP_SELF,$QUERY_STRING,$counter_error_state,$counter_error_msg;
        if(empty($db_user)||!$db_user||$db_user=="")$res=@mysql_connect("localhost");
        else $res=@mysql_connect("localhost",$db_user,$db_pass);
        if(!$res)
        {
                $counter_error_states=-10;
                $counter_error_msg="不能连接数据库";
                return -10;
        }
        if(!@mysql_select_db($db_name))
        {
                $counter_error_states=-11;
                $counter_error_msg="不能选择数据库";
                return -11;
        }
        else
        {
                if(!$db_res=@mysql_query("SELECT * FROM ".$db_table))
                {
                        if(!$db_res=@mysql_query("CREATE TABLE ".$db_table." (id INTEGER AUTO_INCREMENT,PRIMARY KEY (id),file VARCHAR(255),query VARCHAR(255),time VARCHAR(255),count INT)"))
                        {
                                $counter_error_states=-20;
                                $counter_error_msg="不能创建数据表";
                                return -20;
                        }
                        @mysql_free_result($db_res);
                }
                $str="SELECT * FROM ".$db_table." WHERE file=\"".$file."\" AND query=\"".$query."\"";

                if(!$db_res=@mysql_query($str))
                {
                        $counter_error_states=-30;
                        $counter_error_msg="不能查询记录";
                        return -30;
                }
                $num=@mysql_num_rows($db_res);
                if($num>1)
                {
                        $counter_error_states=-40;
                        $counter_error_msg="发生没有预期的错误=数据行数错误";
                        return -40;
                }
                $count=0;
                $str="INSERT ";
                $strWhere="";
                if($num==1)
                {
                        $row=@mysql_fetch_array($db_res);
                        @mysql_free_result($db_res);
                        $count=$row["count"];
                        $id=$row["id"];
                        $str="UPDATE ";
                        $strWhere=" WHERE id=$id";
                }
                if($add<1)return $count;
                $count+=$add;
                $str.=$db_table." SET file=\"".$file."\",query=\"".$query."\",time=\"".date("Y;n;d;G;i;s")."\",count=".$count.$strWhere;
                $db_res=@mysql_query($str);
                if(!$db_res)
                {
                        $counter_error_states=-50;
                        $counter_error_msg="不能添加或更新记录";
                        return -50;
                }
                return $count;
        }
}

}
?> 

PHP 相关文章推荐
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
PHP与SQL注入攻击[三]
Apr 17 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
PHP 类相关函数的使用详解
May 10 PHP
php跨站攻击实例分析
Oct 28 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
smarty中常用方法实例总结
Aug 07 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
php 流程控制switch的简单实例
Jun 07 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
用Php实现链结人气统计
Oct 09 #PHP
也谈 PHP 和 MYSQL
Oct 09 #PHP
在WIN98下以apache模块方式安装php
Oct 09 #PHP
Php+SqlServer实现分页显示
Oct 09 #PHP
写一个用户在线显示的程序
Oct 09 #PHP
PHP4引用文件语句的对比
Oct 09 #PHP
一个php作的文本留言本的例子(六)
Oct 09 #PHP
You might like
thinkphp学习笔记之多表查询
2014/07/28 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python读取指定日期邮件的实例
2019/02/01 Python
django 单表操作实例详解
2019/07/30 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
可口可乐广告词
2014/03/20 职场文书
大学生就业意向书范文
2014/04/01 职场文书
党员大会主持词
2014/04/02 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
优质护理服务心得体会
2016/01/22 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
详解Python常用的魔法方法
2021/06/03 Python