1 頁 (共 1 頁)

[問題] 訪客使用浮動 IP, 必須不斷重新登入--- 貴站留言版

發表於 : 2005-03-22 20:34
smilecome
本人是透過公司企業之 proxy sever 上網, 因此IP 是浮動的,
以致本人很難登入貴站之phpbb2 留言版, 即時登入後,
還是被要求, 需不斷重新登入, 因為本人使用 IP 又變了.
(本人電腦 Cookis 複寫全部設定為 yes)

即使本人自己架設的 phpbb2 or phppp2 plus, 也是同樣有這些登入問題.

但這些問題並不發生在使用固定 IP 上網進入 phpbb2 的訪客.

所以不知是否有人知道如何解決:

:arrow: 訪客使用浮動 IP, 必須不斷重新登入 --- 貴站留言版-- 的問題 ? :?:

(註: 寫這篇留言, 至少登入 5 次才 成功)

●本人作業系統:Windows 2000 SP4
●本人上網方式:CABLE via proxy server (1.5 pxy:3128 squid/2.5.stable2) (ISP = HINET-IP.hinet.net)
●本人網路 Cookies 設定: 1. 複寫自動 cookies 處理(YES), 2. 接受第一與第三方 Cookies (YES)
●本人防火牆 : PCCILIN 2004
●本人上網 IP: remote IP 多組 220.130.**** from 178.1.****

發表於 : 2005-04-03 17:13
DL
這完全是你的網路公司的問題...跟phpbb完全無關

發表於 : 2005-04-15 00:40
smilecome
DL 寫:這完全是你的網路公司的問題...跟phpbb完全無關
應該不是這個問題, 因為在使用 Xoops2.0.9, phpnuke7.6, 雷傲論壇 leobbs, 或是一些有名的商業網站購物登入時, 都沒有phpbb2 2.0.13 這個一直搞不清楚 client 端是誰, 不斷要求要重新登入的問題.

應該是 phpbb2 的 session 寫法, 有些不一樣, 等花點時間研究一下, 找到問題再說.

[問題] phpbb2 沒有使用 HTTP_X_FORWARDED_FOR 來記錄 IP

發表於 : 2005-04-15 11:35
smilecome
原因找到了: 這是因為 phpbb2 無法讀取 使用代理伺服器主機的 user IP ,也就是 phpbb2 並不使用 " HTTP_X_FORWARDED_FOR" , 這個指令, 來取得user 的真實IP, 才會一直要求要 user 登入:

請看 common.php 第 201 ~208 行, 便可了解:

代碼: 選擇全部

// Obtain and encode users IP
//
// I'm removing HTTP_X_FORWARDED_FOR ... this may well cause other problems such as
// private range IP's appearing instead of the guilty routable IP, tough, don't
// even bother complaining ... go scream and shout at the idiots out there who feel
// "clever" is doing harm rather than good ... karma is a great thing ... :)
//
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );

$user_ip = encode_ip($client_ip);
所以若是使用防火牆, 經由 proxy server 來使用 phpbb2 的朋友 , 若沒有使用HTTP_X_FORWARDED_FOR ", 來偵測 user 真實 IP, 大概登入都有問題, 除非把 session IP 也給拿掉.

[建議] 更改 session IP 語法

發表於 : 2005-04-16 01:09
smilecome
建議將上面的 $Client_ip=...... 這一段, 改寫如下:

代碼: 選擇全部

 if (getenv('HTTP_X_FORWARDED_FOR') )
   {
    $client_ip = ( !empty($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']) ) ? $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'] : ( ( !empty($HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR']) ) ? $HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'] : getenv('HTTP_X_FORWARDED_FOR') );
   } else
   {
    $client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );
   } 
應可解決一些 USER 透過 proxy server 上網, 使用浮動 IP, 以致無法登入的問題. (至於會有什麼作者說的安全隱私問題, 不太了解..., 請自行研究斟酌

發表於 : 2005-04-22 12:00
lasthero
您好, 我照您的方法修改後仍然無法登入, 有時候看到登入了, 但去點文章連結或是去其他地方, 都會叫我再登入一次, 我是用公司內部網路上網, 用的是公司給的虛擬IP, 需要經過公司的proxy才能上網, 也有碰到這樣的問題.

發表於 : 2005-04-28 13:58
smilecome
lasthero 寫:您好, 我照您的方法修改後仍然無法登入, 有時候看到登入了, 但去點文章連結或是去其他地方, 都會叫我再登入一次, 我是用公司內部網路上網, 用的是公司給的虛擬IP, 需要經過公司的proxy才能上網, 也有碰到這樣的問題.
將 if (getenv('HTTP_X_FORWARDED_FOR') ) 改成


if (getenv('HTTP_X_FORWARDED_FOR') !='')

試試看, 如果還是不行, 你可以自己寫一段 PHP 小程式, 將 虛擬 與 真實 IP 全部顯示出來看一下, 看看是哪個值變來變去 ? (不斷按 重新整理按鈕)

你也可以到 http://www.all-nettools.com 去測試你公司 IP 狀態

發表於 : 2005-05-17 01:50
kennethf
請問各位解決此問題未, 小弟亦有相同問題於個另ISP上.