编程论坛
400万+工程师在用
400万+工程师在用

电子发烧友网工程师

17年用户 16436经验值
擅长:可编程逻辑 MEMS/传感技术 测量仪表 模拟技术 控制/MCU RF/无线
私信 关注

计数器程序

2009-1-10 23:45

<b><font style="FONT-SIZE: 18pt" face="楷体_GB2312" color="#ff6666">
<p><font face="Verdana">计数器程序</font></p>
<p><font face="Verdana">&lt;? <br/>///////////////////////////////////////////////////////////////////////// <br/>// <br/>// counter.php - 实现一个很简单的计数器<br/>//&nbsp; <br/>// 作者: Claus Radloff <br/>//&nbsp; <br/>// 描述:<br/>// 这个计数器可以变成多重的计数器。因此,每一个 计数器可以自己得到自己<br/>// 的身份证明。 <br/>//<br/>// 前面的部分——是背景色以及数字的定义,你可能自行修改。<br/>// 当然,如果背景色是透明的那就更好了。 <br/>// <br/>// 以下是一些在 URL 中的参数: <br/>// 例如: <br/>// Simple Counter:<br/>//&nbsp;&nbsp; &lt;img src="counter.php?Identi€€Fier=Test"&gt; <br/>//&nbsp;&nbsp;&nbsp; <br/>// 红色背景的计数器: <br/>//&nbsp;&nbsp; &lt;img src="counter.php?Identifier=Test&amp;BGColor=255+0+0"&gt; <br/>// 或者是: <br/>//&nbsp;&nbsp; &lt;img src="counter.php?Identifier=Test&amp;BGColor=red"&gt; <br/>//&nbsp;&nbsp;&nbsp; <br/>// 红色背景,绿色前景,只有4位数的计数器<br/>//&nbsp;&nbsp; &lt;img src="counter.php?Identifier=Test&amp;BGColor=255+0+0&amp;FGColor=0+255+0&amp;Length=4"&gt; <br/>// 或是: <br/>//&nbsp;&nbsp; &lt;img src="counter.php?Identifier=Test&amp;BGColor=red&amp;FGColor=green&amp;Length=4"&gt; <br/>//&nbsp;&nbsp;&nbsp; <br/>// 透明背景和红色前景的样式:<br/>//&nbsp;&nbsp; &lt;img src="counter.php?Identifier=Test&amp;BGColor=transparent&amp;FGColor=red"&gt; <br/>//&nbsp; </font></p>
<p><font face="Verdana">&nbsp;4/14/2000&nbsp;&nbsp;&nbsp; Mouse Chen( litmouse@km169.net&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp; Translate it to Chinese</font></p><font face="Verdana">
<p><br/>&nbsp;&nbsp;&nbsp; Header( "Content-type: image/gif"); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; require( "colors.php"); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 装载GD-Library <br/>&nbsp;&nbsp;&nbsp;&nbsp; // Windows下是这条语句:dl("php3_gd.dll"); <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 而 UNIX 就应该是下面这条:<br/>&nbsp;&nbsp;&nbsp; dl( "php3_gd.so"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; // 一些初始设定<br/>&nbsp;&nbsp;&nbsp; $Font&nbsp;&nbsp;&nbsp;&nbsp; = 5; <br/>&nbsp;&nbsp;&nbsp; $BGColor&nbsp; = GetColor( "black"); <br/>&nbsp;&nbsp;&nbsp; $BGTrans&nbsp; = False; <br/>&nbsp;&nbsp;&nbsp; $FGColor&nbsp; = GetColor( "white"); <br/>&nbsp;&nbsp;&nbsp; $FGTrans&nbsp; = False; <br/>&nbsp;&nbsp;&nbsp; $Length&nbsp;&nbsp; = 7; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; // 取得输入参数 <br/>&nbsp;&nbsp;&nbsp; $query_string = getenv( "QUERY_STRING"); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 分析输入的参数<br/>&nbsp;&nbsp;&nbsp;&nbsp; // 并分闻参数 <br/>&nbsp;&nbsp;&nbsp; $env_array = split( "&amp;", $query_string); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 把参数及其值分开,并把值转成 %XX的形式 <br/>&nbsp;&nbsp;&nbsp; while (list($key, $val) = each($env_array)) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list($name, $wert) = split( "=", $val); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $name = urldecode($name); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $wert = urldecode($wert); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 写入 $cgivars <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $CGIVars[$name] = $wert; <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 用输入的参数重新设定初始值 <br/>&nbsp;&nbsp;&nbsp; if ($CGIVars[ "BGColor"]) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ereg( "([0-9]*) ([0-9]*) ([0-9]*)", $CGIVars[ "BGColor"], $tmp)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $BGColor[ "red"]&nbsp;&nbsp; = $tmp[1]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $BGColor[ "green"] = $tmp[2]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $BGColor[ "blue"]&nbsp; = $tmp[3]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (eregi( "transparent", $CGIVars[ "BGColor"])) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $BGTrans = True; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $BGColor = GetColor($CGIVars[ "BGColor"]); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; if ($CGIVars[ "FGColor"]) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ereg( "([0-9]*) ([0-9]*) ([0-9]*)", $CGIVars[ "FGColor"], $tmp)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $FGColor[ "red"]&nbsp;&nbsp; = $tmp[1]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $FGColor[ "green"] = $tmp[2]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $FGColor[ "blue"]&nbsp; = $tmp[3]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (eregi( "transparent", $CGIVars[ "FGColor"])) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $FGTrans = True; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $FGColor = GetColor($CGIVars[ "FGColor"]); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; if ($CGIVars[ "Length"]) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Length = $CGIVars[ "Length"]; <br/>&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; $SizeX = $Length * 13; <br/>&nbsp;&nbsp;&nbsp; $SizeY = 16; <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 读入 counter-文件 <br/>&nbsp;&nbsp;&nbsp; if (file_exists( "counter.txt")) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $fp = fopen( "counter.txt",&nbsp; "rt"); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ($Line = fgets($fp, 999)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ereg( "([^ ]*) *([0-9]*)", $Line, $tmp)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $CArr[ "$tmp[1]"] = $tmp[2]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fclose($fp); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 得到计数器的标志 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Counter = $CArr[$CGIVars[ "Identifier"]]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Counter += 1; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $CArr[$CGIVars[ "Identifier"]] = $Counter; <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp; else <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 新的计数器初值为1 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $CArr[$CGIVars[ "Identifier"]] = 1; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Counter = 1; <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 写入计数器文件中<br/>&nbsp;&nbsp;&nbsp; $fp = fopen( "counter.txt",&nbsp; "wt"); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; reset($CArr); <br/>&nbsp;&nbsp;&nbsp; while (list($Key, $Value) = each($CArr)) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tmp = sprintf( "%s %d\n", $Key, $Value); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fwrite($fp, $tmp); <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; fclose($fp); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; $Counter = sprintf( "%0".$Length. "d", $Counter); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 创建 image <br/>&nbsp;&nbsp;&nbsp; $img = ImageCreate($SizeX + 4, $SizeY + 4); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; ImageInterlace($img, 1); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 透明颜色 <br/>&nbsp;&nbsp;&nbsp; $trans = ImageColorAllocate($img, 1, 1, 1); <br/>&nbsp;&nbsp;&nbsp; ImageColorTransparent($img, $trans); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; // 填充背景色<br/>&nbsp;&nbsp;&nbsp; if ($BGTrans) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageFill($img, 1, 1, $trans); <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp; else <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $col = ImageColorAllocate($img, $BGColor[ "red"], $BGColor[ "green"], <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $BGColor[ "blue"]); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageFill($img, 1, 1, $col); <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 输出数字 <br/>&nbsp;&nbsp;&nbsp; if ($FGTrans) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $col = $trans; <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp; else <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $col = ImageColorAllocate($img, $FGColor[ "red"], $FGColor[ "green"], <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $FGColor[ "blue"]); <br/>&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; $PosX = 0; <br/>&nbsp;&nbsp;&nbsp; for ($i = 1; $i &lt;= strlen($Counter); $i++) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageString($img, $Font, $PosX + 3, 2 + $i % 2,&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; substr($Counter, $i - 1, 1), $col); <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; if ($i != 1) <br/>&nbsp;&nbsp;&nbsp; { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageLine($img, $PosX, 0, $PosX, $SizeY + 4, $trans); <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; $PosX += 13; <br/>&nbsp;&nbsp;&nbsp; } <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; // 输出图片<br/>&nbsp;&nbsp;&nbsp; ImageGif($img); <br/>&nbsp;&nbsp;&nbsp; ImageDestroy($img); <br/>?&gt; </p>
<p></font>&nbsp;</p></font></b>

回帖(1)

hncyxyl

2009-1-28 02:47:27
<br/><br/><br/><br/>楼主辛苦了!

更多回帖

打开APP