PHP代码解释

来源:百度知道 编辑:UC知道 时间:2024/06/20 13:04:46
刚学习PHP,看了段PHP计数器代码不太明白,望高手指点下谢谢。
function checkIP($rem_addr) {
global $fpt_ip,$ip_lock_timeout;
$ip_array = file($fpt_ip);
$reload_dat = fopen($fpt_ip,"w");
$this_time = time();

for ($i=0; $i<sizeof($ip_array); $i++) {
list($ip_addr,$time_stamp) = split("\|",$ip_array[$i]);
if ($this_time < ($time_stamp+60*$ip_lock_timeout)) {
if ($ip_addr == $rem_addr) {
就上面这段不太懂

$found=1;
}
else {
fwrite($reload_dat,"$ip_addr|$time_stamp");
}
}
}
fwrite($reload_dat,"$rem_addr|$this_time\n");
fclose($reload_dat);
return ($found==1) ? 1 : 0;
}

if (!file_exists($fpt)) {
$count_dat = fopen($fpt,"w+");
$count = 1;
fwrite($count_dat,$count);
fclose($count_dat);
}
else {
$line = file($fpt);
$count = $line[0];
if ($lock_ip==0 || ($lock_ip==1 && ch

先看$ip_array

在上面的 $ip_array = file($fpt_ip); 这里定义。
也就是说,$ip_array里现在保存的是 $fpt_ip 这个文件的一个数组($fpt_ip 文件的每行为一个数组下标, 下标从0开始), 换句话说你echo $ip_array[0] 就可以得到$fpt_ip 文件的第一行....
echo $ip_array[1] 就可以得到$fpt_ip 文件的第二行....

// 知道了$ip_array[0] 这个0是这么来的了,有规律,所以从0开始变,也就是这里的$i的取值
for ($i=0; $i<sizeof($ip_array); $i++) {

// split 函数是用来将$ip_array[$i]分割到数组中的, 而list就去取得这个值, 以后用$ip_addr就可以得到地址,用$time_stamp就可以得到时间
// 也就是说,我可以现在猜到你的echo $ip_array[0] 出来值应该是
// “地址\|时间 ”这样的格式
list($ip_addr,$time_stamp) = split("\|",$ip_array[$i]);

if ($this_time < ($time_stamp+60*$ip_lock_timeout)) {
现在就好解释了
$this_time 当前时间
$time_stamp 上一个地址记录的时间
60*$ip_lock_timeout IP锁定时间

最后得到的就是:

这个IP地址上次来的时间 + 他被锁定的时间 大于 现在时间
也就是 他还没有到解锁时间呢..........