现在的位置: 首页Php>正文
一个简易的php代码计数器 [原创]
2011年05月05日 Php 评论数 18 ⁄ 被围观 20,578 次+

之前使用了一个网上随便找的简易计数器代码,必须启用exec函数,有些童鞋的空间商为了安全起见禁用了此函数导致代码出错,特写了段简单的读写文件的和读写数据库的代码供参考。
代码如下:

  1. <?php   
  2. $counterFile = "counter.txt";   
  3. if (!file_exists($counterFile))   
  4. {   
  5.     file_put_contents($counterFile, 0);   
  6. }   
  7. $num = intval(file_get_contents($counterFile));   
  8. $num ++;   
  9. echo"您是第 "."$num"." 位访客";   
  10. file_put_contents($counterFile$num);   
  11. ?>  

下面一个是修改为每天计数:

  1. <?php   
  2. $counterFile = "counter.txt";   
  3. clearstatcache();   
  4. if (!file_exists($counterFile))   
  5. {   
  6.     file_put_contents($counterFile, 0);   
  7. }   
  8. $lasttime = filemtime($counterFile);   
  9. if ($lasttime)   
  10. {   
  11.     $lastdate = date("Y-m-d"$lasttime);   
  12.     if ($lastdate != date("Y-m-d", time()))   
  13.     {   
  14.         file_put_contents($counterFile, 0);   
  15.     }   
  16. }   
  17. $num = intval(file_get_contents($counterFile));   
  18. $num ++;   
  19. echo"您是今天第 "."$num"." 位访客";   
  20. file_put_contents($counterFile$num);   
  21. ?>  

此代码没有什么大的用处,这个计数器与网站流量统计有很大区别,记录的是刷新次数,并不是真实记录访问者的IP,主要是满足一下大家的虚荣心罢了!由于写文件总是导致莫名的自动重新计数问题,可能是并发的时候,读取写入文件出错导致的,下面的代码是写入数据库,不会出现自动重新计数的问题,代码如下:

  1. <?php   
  2. $config_file = dirname(dirname(dirname(dirname(dirname(__FILE__))))).'/wp-config.php';   
  3. require_once($config_file);   
  4. $conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) ordie("不能连接");   
  5. mysql_select_db(DB_NAME,$conn) ordie("数据库连接错误");   
  6. mysql_query('set names utf8');   
  7. $query = "select * from ".DB_COUNTER;   
  8. $result = mysql_query($query) ordie("不能查询");   
  9. if($result)   
  10. {   
  11.     $r=mysql_fetch_array($result);   
  12.     $counter = $r['count'] + 1;   
  13.     $date = date("Y-m-d");   
  14.     if($r['date'] != $date)   
  15.     {   
  16.         $sql = "update ".DB_COUNTER." set count = '1', date = '$date' where id=1";   
  17.         echo"您是今天第 1 位访客";//输出结果   
  18.     }   
  19.     else  
  20.     {   
  21.         $sql = "update ".DB_COUNTER." set count = count + 1 where id=1";   
  22.         echo"您是今天第 "."$counter"." 位访客";//输出结果   
  23.     }   
  24.     $result=mysql_query($sql);   
  25. }   
  26. ?>  

同时在wp-config.php中添加

  1. /** 计数器 */
  2. define('DB_COUNTER', 'wp_counter');

打开数据库,添加一个表wp_counter

  1. DROPTABLE IF EXISTS `wp_counter`;
  2. CREATETABLE `wp_counter` (`id` int(11) NOTNULLDEFAULT '0',`count` doubleDEFAULTNULL,`date` dateDEFAULTNULL,PRIMARYKEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  3. insertinto `wp_counter` (`id`, `count`, `date`) values('1','1','2011-06-09');

配合鸟哥最新的HotNewspro2.5主题使用(可在后台设置是否显示顶部访客统计计数)在上面代码基础上分别在行首及行尾添加两行如下:

  1. 行首添加:<?php if (get_option('swt_count') == 'Display') { ?>
  2. 行尾添加:<?php } else { } ?>

counter

本文地址:http://www.92csz.com/26/570.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog
 

目前有 18 条留言 其中:访客:9 条, 博主:9 条

  1. 阿呆 : 2011年05月06日16:22:35  1楼

    已经用上。呵呵。高人。谢了。 :razz:

    • clairelume : 2011年05月06日17:38:42

      不客气,欢迎互访! :razz:

  2. 阿呆 : 2011年05月06日18:01:47  2楼

    弱弱问一句,我的下部为啥不会出现【友情链接申请】字样啊。只能在友情链接的地址显示栏内出现? :razz:

    • clairelume : 2011年05月06日19:02:00

      我的底部的友情链接申请是添加的一个页面,然后在后台外观–>菜单里添加到底部导航就可以了。另外也可以使用AutoBolgroll插件会自己生成一个友情链接申请入口 :lol:

  3. 松月 : 2011年06月12日09:22:20  3楼

    博主,你好。请问评论中的admin盖章效果是怎么实现的?!

    • clairelume : 2011年06月12日09:29:20

      这个也就是在2.5主题的管理员评论回复大头像的基础上加了一个条件,添加了一个样式和背景图片而已,很简单

  4. 知更鸟 : 2011年06月17日16:42:45  4楼

    代码已标点已被自动替换为全角标点,别人无法正常使用
    还得手动改

    • clairelume : 2011年06月17日17:40:42

      已修复,之前重装wordpress忘了修改了 :razz: 多谢提醒!

  5. 软兔兔り : 2011年06月30日18:46:33  5楼

    :shock: 为什么没有效果~~ 显示不能查询~~ 蛋疼

    • clairelume : 2011年06月30日18:49:58

      表中没有插入默认数据吧?

      1. insert into `wp_counter` (`id`, `count`, `date`) values(‘1‘,’1‘,’2011-06-09‘);   

      执行没

  6. x-spy : 2011年07月10日13:52:22  6楼

    你好, 请问鸟哥 2.5 不用exec的这断代码+在哪个文件里

    • clairelume : 2011年07月10日18:23:01

      替换掉主题目录下 :razz: includes/counter.php文件内容即可

      • x-spy : 2011年07月11日16:58:10

        哈哈 万分感谢 找了好久 我技术太差 多像你学习,以后多多交流~~~

        • clairelume : 2011年07月11日17:00:19

          呵呵,不要客气啦,互相学习!~

  7. 忆龙SEO : 2011年07月26日16:53:59  7楼

    不简单啊.

    • clairelume : 2011年07月26日16:59:52

      鸟哥的默认是不清零的一直计数,但是有的为什么会清零呢?原因是同时访问量大时写文件锁导致清零,记录到数据库的方法可以试试~

  8. JUANJUAN : 2012年02月15日15:17:34  8楼

    什么建新的数据表呀

    • clairelume : 2012年02月15日16:26:46

      就在连接mysql数据库,在wordpress的数据库中新建一个数据表,可用上面提到的sql语句完成创建过程 :grin: