转自ChinaLab php教程中的程序!
图像计数器
所需文件:
exa3-5.php // 主调用文件
exa3-5.inc // 计数函数
exa3-5.dat // 数据记录文件
img/ // 记数图像文件夹,内有文件0.gif ~ 9.gif
详细代码如下:
exa3-5.php
<?
php
require
(
"
exa3-5.inc
"
);
?>
<
html
>
<
head
><
title
>
我的计数器
</
title
></
head
>
<
body
>
<
p
>
欢迎进入我的网站
</
p
>
您是本站第
<?
php counter();
?>
位访客
!<
br
>
</
body
>
</
html
>
exa3-5.inc
<?
php
function
counter(){
$max_len
=
8
;
$CounterFile
=
"
exa3-5.dat
"
;

if
(
!
file_exists
(
$CounterFile
)){
$Counter
=
0
;
$cf
=
fopen
(
$CounterFile
,
"
w
"
);
flock
(
$cf
,
3
);
fputs
(
$cf
,
"
0
"
);
fclose
(
$cf
);
}
else
{
$cf
=
fopen
(
$CounterFile
,
"
r
"
);
flock
(
$cf
,
3
);
$Counter
=
trim
(
fgets
(
$cf
,
$max_len
));
fclose
(
$cf
);
}

if
(
session_is_registered
(
"
in
"
)
==
false
){
$Counter
++
;
$cf
=
fopen
(
$CounterFile
,
"
w
"
);
flock
(
$cf
,
3
);
//
1 、表示设定锁住档案可以允许别的行程读取;
// 2 、表示只有该行程可以写入档案;
// 3 、表示读写均锁住;
// 4 、不锁住区块 (block)。
fputs
(
$cf
,
$Counter
);
}

$Counter_len
=
strlen
(
$Counter
);

for
(
$i
=
1
;
$i
<=
(
$max_len
-
$Counter_len
);
$i
++
){
echo
"
<img src='img/0.gif'>
"
;
}

for
(
$i
=
1
;
$i
<=
$Counter_len
;
$i
++
){
echo
"
<img src='img/
"
.
substr
(
$Counter
,
$i
-
1
,
1
)
.
"
.gif'>
"
;
}
}
?>