首页| 版块| 我的| 发帖| 消息
主题:关于在线列表用户名显示错误
zhangjingyu 
第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("",96)."\n");
建立文件online.php,内容为"",并用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 - 填充字符串的右侧。默认。

这个函数没接触过。

  

运行结果:.:.:.:.:.Hello World.:.:.:.:.:

  

运行结果:...................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个字符的长度。
zhangjingyu回帖于2019-01-04 16:17[查看电脑版]
下一楼»:上午没有花太多时间继续追踪1楼提到的$index_whosonline,而是在本地子论坛下继续测试,发现没有 ..
«上一楼:online.php是一个缓存文件,那么必然有一个文件会生成该文件。
经过搜索,应该是require/use ..

查看全部回帖(29)
«返回主帖