2016年11月为了宣传我们的IP查询网站,添加了“Drupal网站中显示留言者的IP地址”功能,MediaWiki站也通过修改相关程序来实现,但有用户反映不希望自己的IP地址暴露出来,特别是在查号吧这个网站,一些曝光骗子号码的匿名用户更是不愿IP暴露、引起可能的打击报复麻烦。
今天去进行了两个修改,一个是正常的页面显示中把IP地址后两位数字屏蔽,这是通过修改includes/OutputPage.php来实现的:
public function addHTML( $text ) { //jamesqi 2018-8-1 用户反映不想自己的IP显示,特别是骗子号码曝光类的,怕报复!改为显示前面两个数字,隐藏后面两个数字 $ip = "(\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3}";//"\d+\.\d+\.\d+\.\d+"; $part1 = "--<a href=\"\/[^\/]*\/"; $part2 = $ip; $part3 = "\" title=\"[^\/]*\/"; $part4 = $ip; $part5 = "\">"; $part6 = $ip; $part7 = "<\/a>"; $pattern = "/($part1)$part2($part3)($part4)($part5)($part6)($part7)/i"; $replace = "--$2.*.*"; $text = preg_replace($pattern, $replace, $text); //add end $this->mBodytext .= $text; }
在这里用了正则表达式匹配显示的IP内容,然后只显示前两位数字,后面两位替换为*.*。
另外用户也反映历史页面带有IP地址显示,我们也通过修改includes/actions/HistoryAction.php这个文件来解决:
...... $s .= " $link"; $s .= $dirmark; //jamesqi 2018-8-1 // $s .= " <span class='history-user'>" . // Linker::revUserTools( $rev, true ) . "</span>"; //example: <a href="/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/61.184.226.114" title="特殊:用户贡献/61.184.226.114" class="mw-userlink mw-anonuserlink">61.184.226.114</a> $linker = Linker::revUserTools( $rev, true ); $ip = "(\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3}";//"\d+\.\d+\.\d+\.\d+"; $part1 = "<a href=\"\/[^\/]*\/"; $part2 = $ip; $part3 = "\" title=\"[^\/]*\/"; $part4 = $ip; $part5 = "\" class=\"mw-userlink mw-anonuserlink\">"; $part5 = "\"[^>]*>"; $part6 = $ip; $part7 = "<\/a>"; $pattern = "/($part1)$part2($part3)($part4)($part5)($part6)($part7)/i"; $replace = "$2.*.*"; $linker = preg_replace($pattern, $replace, $linker); $s .= " <span class='history-user'>" . $linker. "</span>"; $s .= $dirmark; ......
这也是用的与前面一样的办法进行正则表达式查找和替换,让整个History页面中的IP地址不显示后面两位,也不带有链接了。
这种直接修改MediaWiki源代码的办法不规范,但简单易用。
评论