2011-12-05 24 views
-1

是否可以手動分配session_id()一個新的值?是否有可能在php中分配session_id()值?

我試過以下,但它不工作:

session_start(); 
$sessionId = session_id(); 
echo $sessionId; 

if ($sessionId != $ses) { 
session_id() = $ses; 
} 
+0

from the manual:string session_id([string $ id]) – macjohn

+0

'session_id()= $ ses;'甚至沒有什麼效果。你不能給一個函數賦值。如果你認爲這是一種在任何地方做某事的有效方法,我建議你[回到基礎知識](http://www.php.net/manual/en/language.basic-syntax.php)語言。 – DaveRandom

回答

2

可以使用session_id()

session_id($sessionId); 

session_id()可用於或者獲取會話ID或通過傳遞設置一個可選的函數參數,正如我上面所做的。

值得注意的是,從手動下列關於函數調用順序和會話ID字符限制:

如果指定的ID,它將取代目前的會話ID。 session_id()需要在session_start()之前被調用,以達到 的目的。根據會話處理程序的不同,在會話ID內不允許所有字符均爲 。例如,文件會話處理程序 僅允許範圍爲a-z A-Z 0-9,(逗號)和 - (減號)的字符!

+0

+1,做得很好,可以抵制在提問前提出閱讀手冊諷刺意見的衝動... – DaveRandom

+0

@DaveRandom其實我在閱讀手冊之前詢問了一個問題,但我是初學者,並不太確定,這就是爲什麼我轉向了stackoverflow – Wilest

2

你必須在你開始會話分配的ID。

session_id('hello'); 
start_session(); 

但是,要小心這樣做。會話ID(通常)是一個長的隨機字母數字字符串。如果你將其設置爲常量/簡單的東西,那麼你已經讓別人劫持你的用戶的會話變得容易得多。

如果兩個或多個人獲得相同的會話ID,他們將共享相同的會話,因爲此ID是特定會話的唯一標識符。它對每個用戶都應該是唯一的,沒有重複。

+1

+1關於使用此方法的@wilest的注意事項的好名單。 – Treffynnon

相關問題