2012-08-09 80 views
0

我正在創建授權。在會話中,我想保留用戶ID,但理論上我可以在我的電腦上打開會話文件,然後將此ID改爲服務器。所以我想創建會話ID一些額外的安全密鑰+我的MD5 ID,但是當我試圖讓會話ID $security_key = session_id($_SESSION['user_id']);我得到:創建時獲取會話ID

警告:未知:會話ID是太長或包含非法 字符,有效字符是az,AZ,0-9和' - ',未知在 line 0警告:未知:無法寫入會話數據(文件)。請 驗證的session.save_path的當前設置是否正確 (/用戶/網站/演示/會話/)在未知在線0

UPDATE:謝謝你,只是我自己解決。正確版本SESSION_ID(USER_ID)

+0

並非所有字符都允許在會話ID內。例如,文件會話處理程序只允許範圍爲a-z A-Z 0-9,(逗號)和 - (減號)的字符! ,這可以成爲你的問題......? – 2012-08-09 07:48:24

+0

session_id($ _ SESSION ['userid']) - 同樣的狗屎... – user1564141 2012-08-09 07:52:21

回答

0

如果你想創建一個會話令牌,只需使用類似:

$_SESSION['token'] = md5(session_id().$_SESSION['user_id'].$_SERVER['HTTP_USER_AGENT'].'randomlol'); 

如果您擔心您的主機上有人改變會話變量,你應該考慮使用會話處理程序將會話變量存儲在數據庫中。

+0

不,只有來自用戶方。但這個想法的本質是,我不使用randomlol,而是使用session id,它是隨機的和大的,並且只爲會話時間而生,並且對於每個會話都是唯一的。 – user1564141 2012-08-09 07:58:21

+0

我在我的示例中添加了會話ID。雖然,如果你使用session_regenerate_id(),你需要小心。 – 2012-08-09 08:02:44