仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 895|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之PHP下定制本人的记数器

[复制链接]
跳转到指定楼层
楼主
发表于 2015-2-4 00:03:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)   

计数器是让 Web 访客晓得该网页或网站的人气指数最直接的办法,同时,访主人数也是给告白商做告白的最好根据。固然良多网站都供应收费的计数器,可究竟不是本人亲手制造的,不克不及表现出本人的特征。上面就PHP情况下记数器的制造进程停止具体的会商。
访客计数器的流程以下:
第一名利用者阅读某页。
办事器程式从材料库或档案中读取该页被阅读次数。
将次数加一贮存,并将它送回第一名利用者。
下一名利用者阅读某页。
办事器程式从材料库或档案中读取该页被阅读次数。
将次数再加一贮存,并将它送回下一名利用者。
PHP中没有直接的计数器函数,但使用它壮大的功效,咱们可以很轻易地本人编写一个计数器。计数器的完成分为两个阶段:一是完成计数;二是完成数字的显示。在完成计数时又有两种体例:一是基于文件的计数体例;二是基于数据库的计数体例。一样在完成数字的显示上也有两种体例:一是通俗的文本显示;二是图形体例显示。上面就分离将这四种情形作逐一引见.
1、计数的完成
1.基于文件的计数
道理:把以往的会见人数纪录在一个文本文件中,当网页被会见的时分,翻开该文件并从中读出以往的会见人数,加 1,失掉最新的会见人数,再把最新的会见数字回写到记载会见人数的文件中。
完成;
<?php

$counterFile = "counter.txt";
if (!file_exists($counterFile)) {
//判别文件是不是存在
$fp = fopen($counterFile, "w");
fputs($fp, "0");
fclose($fp);
}
//读文件
$n=10;
$fp = fopen($counterFile, "r");
$str1 = fgets($fp,$n);
$str1++;
fclose($fp);
//回写文件
$fp = fopen($counterFile, "w");
fputs($fp, $str1);
fclose($fp);

?>
法式申明:在阅读到本页时,PHP 程式先找寻 counter.txt 文件是不是存在,若不存在,则创立一个 counter.txt 文件,并将 0 写入文件。然后读取 counter.txt 文件的内容,并将读出的数字加一,然后回写到文件中。
2、基于数据库的计数
道理:把会见人数纪录在一个数据库中,当网页被会见的时分,从数据库中读出以往的会见人数,加 1,失掉最新的会见人数,再把最新的会见数字回写到数据库中。
完成:假定数据库为Mysql数据库,名为XinXiKu,先建一数据表count,表字段中唯一counter一个字段,默许值为0,来纪录会见人数。
<?php

//毗连数据
$db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu",$db);
//更新会见人数
$result=mysql_query("update count set counter=counter+1",$db);

?>
法式申明:会见者在阅读到本页时,起首毗连到数据库,并把记数字段用原值加1来停止更新操作,完成会见数的递增。
2、记数的显示
1、通俗的文本体例显示
这类显示办法很复杂,在需求显示记数的中央直接输入便可。以下面的例子分离申明:
基于文件的计数,直接输入变量str1的内容便可。
<?php echo $str1 ; ?>
基于数据库的计数,起首从数据库中读出,然后再输入。
<?php

//查询数据库
$sql="select * from count";
$result=mysql_query($sql,$db);
//获得纪录集
$record=mysql_fetch_array($result);
//获得会见人数
$str1=$record["counter"];
echo $str1;

?>
一样,你也能够用html语句像 <font color size>等对输入的数字停止润色。文本显示的长处是削减下载工夫,阅读速度快。弱点是显示体例不敷活跃。
2、图形体例显示
道理:把读出的会见数据格局化成尺度的格局,然后使用php供应的图象处置函数,把数字输入成图片格局。如许,数字的显示格局可以随便掌握,真正能表现出本人的特征来。
完成:
<?
Header("Content-type: image/gif");
//界说输入为图象类型
$n=10;
//变量$n是显示位数

//使用下面的办法,获得会见人数并赋值给变量$str1 (法式略)
$str1=获得会见人数的值
$str2 = "";
//位数假如不敷$n位,在后面补0
$len1 = strlen($str1);
for ($i=1;$i<=$n;$i++) {
$str2 = "0".$str2;
};
//失掉$n位0
$len2 = strlen($str2);
//盘算会见人数的位数
$dif = $len2 - $len1;
$rest = substr($str2, 0, $dif);
$string = $rest.$str1;
//位数假如不敷$n位,在后面补0
for ($i=0;$i<=$n-1;$i++) {
$str[$i]=substr($string,$i,1);
};
//以数组存储每位数字
$font = 4;
//界说字号
$im = imagecreate($n*11-1,16);
//新建图像
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
//界说色彩
imagefill($im, 0,0,$black);
//把计数器的底色设置成黑色
ImageString($im,$font,1,0,$str[0],$white);
for ($i=1;$i<=$n-1;$i++) {
imageline($im, $i*11-1,0,$i*11-1,16, $white);
ImageString($im,$font,$i*11+1,0,$str[$i],$white);
};
//将每位写入图像,并以竖线分隔
ImageGif($im);
//图像输入
ImageDestroy($im);
//释放图像
?>
输入图形如图如示:

函数申明:
imagecreate(int x_size, int y_size):创立一张全空的图形。参数 x_size、y_size 为图形的尺寸,单元为像素 (pixel)。
imagecolorallocate(int im, int red, int green, int blue):用来婚配图形的色彩,供其它画图函数利用。参数 im 暗示图形的 handle。参数 red、green、blue 是色采三原色,其值从 0 至 255。
imagefill(int im, int x, int y, int col):将图片坐标 (x,y) 地点的区域着色。参数 col 暗示欲涂上的色彩。
imagestring(int im, int font, int x, int y, string s, int col):在图片上绘出程度的横式字符串。参数 font 为字形,设为 1 到 5 暗示利用默许字形。参数 x、y 为字符串出发点坐标。字符串的内容放在参数 s 上。参数 col 暗示字符串的色彩。
imageline(int im, int x1, int y1, int x2, int y2, int col):在图形上画出一条实线。从 x1、y1 毗连到 x2、y2,原点 (0,0) 为图形的左上角。参数 col 为实线的色彩。
imagegif(int im, string [filename]):创立一张 GIF 格局图形。参数 im 为利用 ImageCreate() 所创立的图片代码。
imagedestroy(int im):将图片 handle 解构,释于内存空间。
3、停止语
1、上述代码假如直接放在文件头,那末只需有人会见该页,不管是刷新仍是从网站的其它页跳转到该页,就会使计数值加1,从而使主页计数得到了真实性。有两个很复杂的举措可以处理。

a、在前往到该页的链接上传递一个参数flag,好比:index.php?flag=1,在计数之前起首反省flag变量是不是已赋值,若未赋值,计数器加1。不然不加。
if(empty($flag)){
$counter+=1;
}
b、用Session纪录一标记flag,在记数前先判别flag是不是已赋值,假如没赋值,则记数加1,并给flag赋值,不然,记数器不变。
if (!isset($flag))
{
//处置记数器加1语句
...
//赋值flag
session_start();
session_register("flag");
$flag=1;
}
2、为了便利,可以将计数器作为一个函数MyCounter(),如许只许需在主页开首到场require("filename"); 使MyCounter()成为此主页的一局部,需求的时分,将<? MyCounter();?>加在需求计数器的中央显示就能够了。
3、使用图形显示计数器时,在需求的中央直接拔出:<img src="counter.php" border=0>便可。但要注重的是PHP中必需装置GD库才干使用php中的图象处置函数。

会HTML吗?会,我能编好几个大表格排板的网页啦!
只想知道 该用户已被删除
沙发
发表于 2015-2-4 08:23:48 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
兰色精灵 该用户已被删除
板凳
发表于 2015-2-6 03:41:34 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-9 03:10:11 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
若相依 该用户已被删除
5#
发表于 2015-2-26 19:43:12 | 只看该作者
做为1门年轻的语言,php一直很努力。
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-27 05:46:11 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
谁可相欹 该用户已被删除
7#
发表于 2015-2-28 16:53:50 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
莫相离 该用户已被删除
8#
发表于 2015-3-1 20:07:38 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
透明 该用户已被删除
9#
发表于 2015-3-5 20:39:50 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
10#
 楼主| 发表于 2015-3-11 13:11:23 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
小魔女 该用户已被删除
11#
发表于 2015-3-12 17:33:57 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
深爱那片海 该用户已被删除
12#
发表于 2015-3-20 00:50:58 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
简单生活 该用户已被删除
13#
发表于 2015-3-23 22:17:57 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
小妖女 该用户已被删除
14#
发表于 2015-4-1 14:08:45 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
山那边是海 该用户已被删除
15#
发表于 2015-4-4 19:10:37 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
再现理想 该用户已被删除
16#
发表于 2015-4-10 05:24:53 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
乐观 该用户已被删除
17#
发表于 2015-4-16 16:09:13 | 只看该作者
实践是检验自己会不会的真理。
海妖 该用户已被删除
18#
发表于 2015-4-19 15:15:53 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
不帅 该用户已被删除
19#
发表于 2015-5-12 13:42:39 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
爱飞 该用户已被删除
20#
发表于 2015-6-5 06:55:42 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 12:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表