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