第9行应该是指定缓存文件名及路径: $D_name = "data/bbscache/online.php";;
第10行,if (!file_exists(D_P.$D_name)) {
如果不存在online.php文件,那么:
第11行, pwCache::writeover(D_P.$D_name,str_pad("<?php die;?>",96)."\n");
建立文件online.php,内容为"<?php die;?>",并用str_pad()函数,用空格填充到96个字符长。
第14行
$newonline = "$windid\t$timestamp\t$onlineip\t$fidwt\t$tidwt\t$groupid\t$wherebbsyou\t$acttime\t$uid\t";
就是写入文件的内容,对应:用户名,时间戳,ip,所在版块,所在主题,用户组,位置,活动时间,uid。
如(online.php文件内的部分内容):
zhangjingyu 1546588067 127.0.0.1 3 3524 3 论坛管理◇家 .. 01-04 15:47 2
第15行 $newonline = str_pad($newonline,$db_olsize)."\n";
用str_pad()函数对上面的$newonline进行了填充。通过搜索,它的定义和用法是:
str_pad() 函数把字符串填充为新的长度。语法str_pad(string,length,pad_string,pad_type)
参数 描述string 必需。规定要填充的字符串。
length 必需。规定新的字符串长度。如果该值小于字符串的原始长度,则不进行任何操作。
pad_string 可选。规定供填充使用的字符串。默认是空白。
pad_type 可选。规定填充字符串的哪边。可能的值:
STR_PAD_BOTH - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。
STR_PAD_LEFT - 填充字符串的左侧。
STR_PAD_RIGHT - 填充字符串的右侧。默认。
这个函数没接触过。
- <!DOCTYPE html>
- <html>
- <body>
- <?php
- $str = "Hello World";
- echo str_pad($str,30,".:",STR_PAD_BOTH);
- ?>
- </body>
- </html>
运行结果:.:.:.:.:.Hello World.:.:.:.:.:
- <!DOCTYPE html>
- <html>
- <body>
- <?php
- $str = "Hello World";
- echo str_pad($str,30,".",STR_PAD_LEFT);
- ?>
- </body>
- </html>
运行结果:...................Hello World
str_pad() 函数的作用应该就是把字符串填充到指定的长度,比如上面第15行的:
$newonline = str_pad($newonline,$db_olsize)."\n";
搜索“$db_olsize”,全局文件global.php里“$db_olsize = 96;”(难怪第11行代码里也有96,原来$db_olsize也是96
)。那么上面代码的意思就是用空格把$newonline填充到96个字符的长度。