同ip不同端口的多個(gè)網(wǎng)站session沖突的解決辦法
作者: 鄭曉 分類: 建站經(jīng)驗(yàn) 發(fā)布于: 2014-09-12 08:11 瀏覽:12,952 評(píng)論(2)
發(fā)現(xiàn)原因:
在局域網(wǎng)內(nèi)使用IP加端口的訪問方式搭了兩個(gè)相同程序的站,結(jié)果發(fā)現(xiàn)用戶在一個(gè)站下登錄后,在另一個(gè)站也同時(shí)登錄了,在一個(gè)退出后,另一個(gè)站也同時(shí)退出了??戳讼鲁绦虬l(fā)現(xiàn)兩個(gè)站都是使用純session方式記錄登錄狀態(tài),Cookie中只保存有PHPSESSID這個(gè)數(shù)據(jù),而且由于使用的IP加端口形式,發(fā)現(xiàn)他們兩個(gè)站的Cookie作用域是相同的,都是屬于該服務(wù)器IP,這也就是導(dǎo)致這個(gè)問題的原因了。
解決方法:
/*————————————————-以下是廢話————————————————-*/
1.把程序改為使用cookie記錄使用的,兩個(gè)站使用不同的cookie前后綴? 還是算了,懶的改。
2.由于服務(wù)器上有DNS服務(wù),給這兩個(gè)站綁定兩個(gè)不同的域名,然后給局域網(wǎng)內(nèi)的所有用戶修改DNS地址?我去,那么多臺(tái)電腦,只能我一個(gè)個(gè)去改,也不符合我們這種技術(shù)屌的風(fēng)格啊。。 而且還是懶。。。算了。
3.給服務(wù)器增加一個(gè)IP,給兩個(gè)站綁定到不同的IP上去,局域網(wǎng)那么多的IP,閑著也是閑。方法可以行,試著弄了下又發(fā)現(xiàn)問題了:直接在本地連接中給這個(gè)網(wǎng)卡加一個(gè)IP,發(fā)現(xiàn)在不同的網(wǎng)關(guān)中,會(huì)提示MAC地址沖突。由于不太懂網(wǎng)絡(luò)搭建,想添加一個(gè)虛擬網(wǎng)卡, 給虛擬網(wǎng)卡分配一個(gè)IP不就行了??jī)蓚€(gè)網(wǎng)卡兩個(gè)MAC應(yīng)該沒問題了吧,試了下發(fā)現(xiàn)虛擬的東西只能在本臺(tái)計(jì)算機(jī)上使用。其它計(jì)算機(jī)是ping不通無法使用的。。 雖然后來又發(fā)現(xiàn)該服務(wù)器有兩個(gè)物理網(wǎng)卡,只是第二個(gè)網(wǎng)卡沒線插了也沒權(quán)限去機(jī)房搞網(wǎng)線插。。還是算了。
4.最后還是通過程序上實(shí)現(xiàn)了。。。
/*————————————————-以上是廢話————————————————-*/
在程序的common文件或是其它公用文件中加入一句php代碼,如下:
ini_set(‘session.name’, ‘PHPSESSID_RS’);
當(dāng)然 第二個(gè)參數(shù)就是session在保存到cookie時(shí)使用的名字,你可以自己設(shè)置自己喜歡的。。。
就是因?yàn)樗谐绦蚴褂玫膕ession名都是在php.ini中設(shè)置的默認(rèn)名稱PHPSESSID, 所以 如果同域(同IP不同端口)下的網(wǎng)站之間使用session時(shí)會(huì)出現(xiàn)共用沖突情況?,F(xiàn)在兩套程序使用不同的session.name來保存sessionid,所以就不會(huì)產(chǎn)生session的沖突問題了。
問題解決!
PS:馬蛋, 我的鍵盤又有兩個(gè)鍵壞了。。問一句,為什么鍵盤會(huì)出現(xiàn)有的鍵按了沒反應(yīng),即使在安全模式(頓號(hào))PE系統(tǒng)中,而且該現(xiàn)象會(huì)發(fā)展,發(fā)展到這個(gè)鍵所在的一列都會(huì)挨個(gè)沒反應(yīng),然后發(fā)展下一列。。最后發(fā)展成拋棄鍵盤直接使用虛擬桌面鍵盤的地步。。。
本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/site-session-different-ip-port.html
有用,收藏了!