教程|应用实例
PHP下定制自己的记数器
计数器是让 Web 访客知道该网页或者网站的人气指数最直接的方法,同时,访客人数也是给广告商做广告的最好依据。虽然很多网站都提供免费的计数器,可毕竟不是自己亲手制作的,不能体现出自己的特色。下面就PHP环境下记数器的制作过程进行详细的讨论。
访客计数器的流程如下:
第一位使用者浏览某页。
服务器程式从资料库或档案中读取该页被浏览次数。
将次数加一储存,并将它送回第一位使用者。
下一位使用者浏览某页。
服务器程式从资料库或档案中读取该页被浏览次数。
将次数再加一储存,并将它送回下一位使用者。
PHP中没有直接的计数器函数,但利用它强大的功能,我们可以很容易地自己编写一个计数器。计数器的实现分为两个阶段:一是实现计数;二是实现数字的显示。在实现计数时又有两种方式:一是基于文件的计数方式;二是基于数据库的计数方式。同样在实现数字的显示上也有两种方式:一是普通的文本显示;二是图形方式显示。下面就分别将这四种情况作一一介绍.
一、计数的实现
1.基于文件的计数
原理:把以往的访问人数记录在一个文本文件中,当网页被访问的时候,打开该文件并从中读出以往的访问人数,加 1,得到最新的访问人数,再把最新的访问数字回写到纪录访问人数的文件中。
实现;
$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,来记录访问人数。
//连接数据
$db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu",$db);
//更新访问人数
$result=mysql_query("update count set counter=counter+1",$db);
?>
程序说明:访问者在浏览到本页时,首先连接到数据库,并把记数字段用原值加1来进行更新操作,实现访问数的递增。
二、记数的显示
1、普通的文本方式显示
这种显示方法很简单,在需要显示记数的地方直接输出即可。以上面的例子分别说明:
基于文件的计数,直接输出变量str1的内容即可。
基于数据库的计数,首先从数据库中读出,然后再输出。
//查询数据库
$sql="select * from count";
$result=mysql_query($sql,$db);
//取得记录集
$record=mysql_fetch_array($result);
//取得访问人数
$str1=$record["counter"];
echo $str1;
?>
同样,你也可以用html语句像 等对输出的数字进行修饰。文本显示的优点是减少下载时间,浏览速度快。缺点是显示方式不够活泼。
2、图形方式显示
原理:把读出的访问数据格式化成标准的格式,然后利用php提供的图像处理函数,把数字输出成图片格式。这样,数字的显示格式可以随意控制,真正能体现出自己的特色来。
实现:
Header("Content-type: image/gif");
//定义输出为图像类型
$n=10;
//变量$n是显示位数
//利用上面的方法,取得访问人数并赋值给变量$str1 (程序略)
$str1=取得访问人数的值
$str2 = "";
//位数如果不够$n位,在前面补0
$len1 = strlen($str1);
for ($i=1;$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$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;$iimageline($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 解构,释于内存空间。
三、结束语
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、利用图形显示计数器时,在需要的地方直接插入:即可。但要注意的是PHP中必须安装GD库才能利用php中的图像处理函数。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

PHP中int类型转换为字节的方法详解在PHP中,我们经常需要将整数类型(int)转换为字节(Byte)类型,比如在处理网络数据传输、文件处理或者加密算法等场景中。本文将详细介绍如何将int类型转换为字节类型,以及提供具体的代码示例。1.int类型与字节的关系在计算机领域,基本数据类型int表示整数,而字节(Byte)是计算机存储单位,通常是8位二进制数据

在C++中,int类型的变量只能保存正整数或负整数值;它们不能保存小数值。有float和double值可用于此目的。为了存储小数点后最多七位的小数,创建了双精度数据类型。整数到双精度数据类型的转换可以由编译器自动完成(称为“隐式”转换),也可以由程序员向编译器显式请求(称为“显式”转换)。在接下来的部分中,我们将介绍各种转换方法。隐式转换编译器自动执行隐式类型转换。要实现这一点,需要两个变量——一个是浮点类型,另一个是整数类型。当我们简单地将浮点值或变量分配给整数变量时,编译器将处理所有其他事情

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

int32的取值范围是从-2的31次方到2的31次方减1,即-2147483648到2147483647。int32是有符号的整数类型,意味着它可以表示正数、负数和零,它使用1位来表示符号位,而剩余的31位用来表示数值。由于一位被用来表示符号位,所以int32的有效位数是31位。

int类型在不同编程语言和不同硬件平台下所占用的字节数可能会有所不同。详细介绍:1、在C语言中,int类型通常占用2个字节或4个字节。在32位系统中,int类型占用4个字节,而在16位系统中,int类型占用2个字节。在64位系统中,int类型可能占用8个字节;2、在Java中,int类型通常占用4个字节,而在Python中,int类型没有字节数限制,可以自动调整等等。

去除方法:1、使用substr_replace()函数将首位数字替换为空字符串即可,语法“substr_replace($num,"",0,1)”;2、用substr截取从第二位数字开始的全部字符即可,语法“substr($num,1)”。


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)