2016-02-26 15 views
0

在我的一個localhost項目中,創建了一個用於用戶登錄的會話。它存儲在$_SESSION['uname']。我的一些其他項目也使用相同的會話名稱變量。問題是當我已經登錄到我的第一個項目管理區域,然後我去我的其他項目管理區域,它並沒有要求我輸入憑據登錄窗口;相反,它直接把我帶到管理面板。我知道這是由於在我的各個項目中使用相同的$_SESSION['uname']而發生的。所以我想知道如何強制其他項目顯示登錄窗口,雖然我已經登錄到我的第一個項目?由一個項目創建的會話也可以通過PHP中的其他項目訪問

也可能我的其他項目有一些不同的登錄憑據,但如果我已經登錄到我的第一個項目,我永遠不會爲我提供登錄屏幕。

我也在想,專業網站如何保持其會話名稱的獨特性,使其他人永遠不會使用它?在我的情況下,會話名稱無處不在。

+0

是什麼這麼快,如果你第一次沒有仔細閱讀,回答我的問題的真正需要?我已經寫了它的原因是使用相同的會話變量名稱。我已經知道了。 – user5307298

+0

偉大的等待有一段時間。你會得到好東西給你。 –

回答

1

看起來你正在爲本地的每個項目使用localhost。

  1. 爲每個項目創建單獨的VirtualHost,然後每個項目的會話將是唯一的 - 因爲cookie的域是不同的。
  2. 如果你想保持本地主機(我不推薦),你應該想想命名空間爲每個項目的會議,比如$ _SESSION [「PROJECT1」] [「UNAME」]
0

您可以使用退出畫面session_unset()然後$_SESSION['uname']將是無效

否則使用特殊名字的uname(也許[ 'UNAME'] [0])

您還可以使用MD5爲UNAME $_SESSION[md5("project 1 uname")];$_SESSION[md5("project 1 namespace")]["uname"];

希望我幫了忙。

+0

不,對我來說不是一個滿意的答案。我已經告訴我是否已經登錄到我的項目1並進入項目2登錄。它會直接帶給我管理員面板。因爲我沒有註銷我的項目-1。專業網站如何確保其會話名稱永遠是唯一的,並且永遠不會被其他網站使用? – user5307298

+0

他們使用隨機字符串,而不是把兩個站點放在同一臺服務器上 –

+0

是的,但是如何使用隨機字符串? – user5307298

0

檢查的php.ini session.cookie_domain指令,到指定的會話cookie設置的域的鏈接。您可以選擇session_set_cookie_params功能。它有$domain參數來設置會話cookie可訪問的域。

例如設置會話cookie只mywebsite.com可見:

<?php 

session_set_cookie_params(3600, '/', 'mywebsite.com'); 

session_start(); 
相關問題