用PHP实现网页计数器的例子_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > 用PHP实现网页计数器的例子

用PHP实现网页计数器的例子

 2012/8/21 11:07:21  乌鸟heart  程序员俱乐部  我要评论(0)
  • 摘要:文章来源:http://wuniaoheart.iteye.com我是乌鸟heart,QQ是287156904,博客:乌鸟heart'Blog网站的访客数可以直接地反应网站的热度,下面介绍两种计数器的原理。本人能力有限,所以,实现的思路可能不是很正规!希望读者给些建议。更多相关文章请访问:乌鸟heart'Blog[b]第一种、利用读写文件创建计数器代码如下:<?phpfunctiondisplayCounter()
  • 标签:PHP 实现 例子 网页
文章来源:http://wuniaoheart.iteye.com
我是乌鸟heart,QQ是287156904,博客:乌鸟heart'Blog
网站的访客数可以直接地反应网站的热度,下面介绍两种计数器的原理。本人能力有限,所以,实现的思路可能不是很正规!希望读者给些建议。
更多相关文章请访问:乌鸟heart'Blog
[b]第一种、利用读写文件创建计数器

代码如下:
<?php
function displayCounter() {                //php简易计数器
    $counterFile = "include/counter.txt";  //定义路径变量
	if (!file_exists($counterFile)) {  //如果不存在,则创建文件并写入初值0
        exec( "echo 0 > $counterFile");
    }
    $fp = fopen($counterFile,"rw");        //指向文件
    $num = fgets($fp,10);                  //读取内容
    $num += 1;
     print "<br><br><br><span>您是第<b class='small'	>"." $num"."</b>位sweety!</span>";
    exec( "rm -rf $counterFile");          //删除旧文件
    exec( "echo $num > $counterFile");     //创建新文件
}
displayCounter();
?>

但是,这种情况下,每次浏览都会自行加一。所以,为了避免这种情况,需要判别访问的人是新用户还是老用户。所以,很容易想到在$num += 1;这条语句上下手。
if(是新用户) { $num += 1;}
那么,新用户的条件如何设定呢?这里,我们用到了$_COOKIE这个缓冲的小文件。它是保存在浏览器当中的东东,酱子我们就可以以此判断了!
必须html标签前设置setcookie()函数,语法如下:setcookie(name, value, expire, path, domain);我们只用到前三个参数,比如:setcookie("user","newguest",time()+3600);
首先,当一个新用户访问的时候,浏览器中没有设定相应的cookie,所以给他设定一个user,值为newguest,然后if()判断。再一次访问时,此时设定了相应的cookie,也就是这个网站和浏览器认识,那么就改变user的值,变为oldguest,然后if()判断。
<?php                                  //前面一段代码要放在网页的html标签前面。
if( !isset($_COOKIE["user"]) ){
    setcookie("user","newguest",time()+3600);
}else {
        setcookie("user","oldguest");
}

......

function displayCounter() {     //php简易计数器
    $counterFile = "include/counter.txt";
	if (!file_exists($counterFile)) {
        exec( "echo 0 > $counterFile");
    }
    $fp = fopen($counterFile,"rw");
    $num = fgets($fp,10);
	if( $_COOKIE["user"] != "oldguest" ){
	$num += 1;
	}
    print "<span>您是第<b class='small'>"." $num"."</b>位sweety!</span>";
    exec( "rm -rf $counterFile");
    exec( "echo $num > $counterFile");
}
displayCounter();
?>

但是,有个空间是不允许在服务器创建、读写文件的。所以,这就是第二种方法......
第二种、利用数据库(mysql)
判断的流程基本一样,所以只给代码了
<?php
if( !isset($_COOKIE["user"]) ){
    setcookie("user","newguest",time()+3600);
}else {
        setcookie("user","oldguest");
}

......

function displayCounter() {         //php简易计数器
    $querysql = "select * from mycounter where id = 1";
	$queryset = mysql_query($querysql);
    while($row = mysql_fetch_array($queryset)){
         $num = $row[counter];
	     if( $_COOKIE["user"] != "oldguest" ){
	        $num = ++$row[counter];
	        $upd_sql = "update mycounter set counter = '$num' WHERE id = '1' ";
	        $myquery = mysql_query($upd_sql);
        }
         print "<span>您是第<b class='small'>"."$num"."</b>位sweety!</span>";
    }
}
displayCounter();
?>


数据库表的结构:
CREATE TABLE `mycounter` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `counter` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

OK,DONE!
发表评论
用户名: 匿名