../iploopup/lib.php
,會造成訪客自動登入後,執行這行無法繼續,故網頁空白,重新整理時已不再更新登入紀錄,所以網頁恢復正常。moodle 可以設定不記錄訪客訪問來避免此問題,但目前系統設定維持訪客訪問記錄,故排除訪客登入 ip 的國別記錄。當用戶首次登入時,由於系統中並沒有上次登入的 ip 訊息,查詢 ip 位置函式 iplookup_find_location
,因找不到對應位置而出現以下錯誤訊息,也要一併處理,也就是當上次登入 ip 是 null,就直接設定國別代碼為 'TW'。
異常-Invalid IP address: ”
[root@dywang html]# diff -urN -wbBE moodle/lib/moodlelib.php moodle23/lib/moodlelib.php --- moodle/lib/moodlelib.php 2012-08-10 08:05:01.000000000 +0800 +++ moodle23/lib/moodlelib.php 2014-11-04 10:01:15.231909874 +0800 @@ -3287,6 +3287,15 @@ $USER->lastlogin = $user->lastlogin = $USER->currentlogin; $USER->currentlogin = $user->lastaccess = $user->currentlogin = time(); + if ( $USER->id != 1 ) { + require_once('../iplookup/lib.php'); //dywang + if(is_null($USER->lastip)) { + $user->country = 'TW'; + } else { + $info = iplookup_find_location($USER->lastip); + $user->country = $info['countrycode']; + } + } $user->id = $USER->id; $DB->update_record('user', $user);
HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, REMOTE_ADDR
順序找尋存在的 IP 記錄,共有以下四種設定選擇,若要直接記錄 proxy ip 可設定只搜尋 REMOTE ADDR
。
HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, REMOTE_ADDR
HTTP_X_FORWARDED_FOR, REMOTE_ADDR
HTTP_CLIENT, REMOTE_ADDR
REMOTE_ADDR