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源代碼的辦法不規範,但簡單易用。
评论