[問題]相同IP的人物禁止同時登入的功能

WOG設定安裝教學

版主: 涅魂, 簫哥

藍語
 
文章: 67
註冊時間: 2005-05-19 6:41 pm

[問題]相同IP的人物禁止同時登入的功能

文章藍語 » 2005-05-24 12:14 am

請問詳細改法是...@@? 先謝謝啦 :D
在function login裡面
加入$p_ip=get_ip();
然後
$check_time=$DB_site->query_first("select p_online_time from wog_player where p_bbsid=".$bbs_id." and p_online_time > $datecut and p_id<>".$p[p_id]."");
改成
$check_time=$DB_site->query_first("select p_online_time from wog_player where p_ip=".$p_ip." and p_online_time > $datecut and p_id<>".$p[p_id]."");
這樣就可以抓到同IP是否上線
然後
if($check_time)
{
alertWindowMsg("相同IP禁止登入");
}else
{
$DB_site->query("update wog_player set p_bbsid=".$bbs_id.",p_ip='".$p_ip."' where p_id=".$p[p_id]."");
}

[/quote]




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-05-24 7:40 pm

開啟檔案wog/class/wog_act_chara.php

尋找
代碼: 選擇全部
$check_time=$DB_site->query_first("select p_online_time from wog_player where p_bbsid=".$bbs_id." and p_online_time > $datecut and p_id<>".$p[p_id]."");


覆蓋為
代碼: 選擇全部
               $p_ip=$get_ip();
               $check_time=$DB_site->query_first("select p_online_time from wog_player where p_ip=".$p_ip." and p_online_time > $datecut and p_id<>".$p[p_id]."");


尋找
代碼: 選擇全部
               if($check_time)
               {
                  alertWindowMsg($lang['wog_act_chara_sameid']);
               }


覆蓋為
代碼: 選擇全部
               if($check_time)
               {
                  alertWindowMsg("相同IP禁止登入");
               }else
               {
                  $DB_site->query("update wog_player set p_bbsid=".$bbs_id.",p_ip='".$p_ip."' where p_id=".$p[p_id]."");
               }

儲存,關閉所有檔案。
完畢。 :wink:


圖檔

藍語
 
文章: 67
註冊時間: 2005-05-19 6:41 pm

文章藍語 » 2005-05-24 8:12 pm

感謝指導...^^"



藍語
 
文章: 67
註冊時間: 2005-05-19 6:41 pm

文章藍語 » 2005-05-24 11:31 pm

改了好像還是可以登入兩個帳號ㄟ @@"
同個ip
================================
剛試了一下開另一個視窗 可以登入另一個帳號 但不會出現相同IP不能登入了訊息,但第一個開的帳號會被第二個取代



頭像
New-TypeChobits
 
文章: 176
註冊時間: 2003-12-12 9:44 am
來自: HONG KONG
性別: 男生

文章New-TypeChobits » 2005-05-25 2:24 am

代碼: 選擇全部
$check_time=$DB_site->query_first("select p_online_time from wog_player where p_ip=".$p_ip." and p_online_time > $datecut and p_id<>".$p[p_id]."");

這句code的意思是.. search現在online的人.. 而id不是和你現在的人一樣... 這就是不同帳號在同一IP下不能登入..
不議建做到同帳號同ip亦不能登入.. 否則.... 如果離開時忘記按登出.. 那麼又要等很久才可再登入了.. 其實同ip同帳號可登入亦不是大問題... 因為系統已有記錄行動的時間.. 所以不可以不停地打怪吧.. 哈哈..

如果你必須做到同帳號同ip亦不能登入亦不會因上述問題而感到煩惱的話.. 亦有一個辦法.. 在資料庫記錄session_id 而建立多一個cookie去記錄session_id.. 在登入時做session和cookie的驗證就可解決了... 在驗證失敗時強制重設cookie並從資料庫中刪除session的記錄並強制令兩個wog登出.. 這就可以了.. 當然這會增加資料庫的負責.. 我亦不建議大家這樣做.


人在江湖... 身不由己...


回到 精華區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 6 位訪客