<?
/*设计思路:
1.创建一个文本文件,记录访客人数
2.每当有人访问页面,访客人数+1
3.格式化访客人数
4.输出访客人数
5.写文本文件*/
/*主要是文件操作和字符串操作
int fopen(string 文件名,string模式);
返回:文件指针或文件句柄
模式:r,r+
w,w+
a,a+ 追加方式
int fclose(int 文件指针);
返回:成功:1,失败:0.
string fgets(int 文件指针,int length);
返回:length-1字符串,若到文件尾,返回EOF。
*/
//定义输出的类型为图形
header("content-type:image/gif");
//以读形式打开记录以往访问人数的文件zzm.txt
$fp=fopen("count.txt","r");
//从文件中读入9个字符,本计数器最大能记录的访问人数为999999999
$str1=fgets($fp,10);
//计数器加入
$str1++;
//关闭文件
fclose($fp);
//以写的方式打开记录访问人数的文件zzm.txt
$fp=fopen("count.txt","w");
//把最新的访问人数写入文件
fputs($fp,$str1);
//关闭文件
fclose($fp);
/*以下是把访问人数格式化输出,如果访问人数位数不够9位,例如5000(4位),则把访问人数变换成000005000的形式输出。方法是计算访问人数的位数,并且把它和000000000的位数(9位)比较,得到相差的位数,然后在数字前面补上相应个0。例如5000,和000000000两者的长度相差5,因此要在5000前面补上5个0。*/
//计算访问人数的位数
$len1=strlen($str1);
//定义计数器最大的计数位数
$str2="000000000";
$len2=strlen($str2);
//计算两者的位数之差,即前面要补的0的个数
$dif=$len2-$len1;
//截取要补的0
$rest=substr($str2,0,$dif);
//前面补0
$string=$rest . $str1;
//定义字号
$font=4;
//新建图象
$im=imagecreate(120,31);
//定义黑色
$background_color=imagecolorallocate($im,0,0,0);
//定义白色
$foreground_color=imagecolorallocate($im,250,250,250);
//把计数器的底色设置成黑色
imagefill($im,0,0,$background_color);
//根据字串的长度,计算字串开始写入的水平坐标,目的是尽量让字串水平对中
//8.3为4号字的大约宽度
$px=(imagesx($im)-8.3*strlen($string))/2;
//向图象写入“My Counter”
imagestring($im,3,$px,2,"My Counter",$foreground_color);
//划一根水平线
imageline($im,1,14,120,14,$foreground_color);
//写访问人数
imagestring($im,$font,$px,15.5,$string,$foreground_color);
//把图象输出成gif格式
imagegif($im);
//释放图象
imagedestroy($im);
echo("您是第 $string 个访问者");
?>