我正在创建自己的会话管理系统,我想在使用session_create_id()函数开始会话之前创建自己的自定义ID,尽管我不确定前缀如何工作,这是我的问题具有的是如果我回显带有前缀的session_create_id,我将看到带有会话ID的前缀,尽管当我将此session_create_id输入到session_id函数中时,在回显时仅看到标准的26长度ID。我在https://wiki.php.net/rfc/session-create-id上找到的这篇文章确实解释了为什么我只看到在配置文件中设置的标准长度。但是我不确定我是否知道该前缀,并且基本上不确定是否确实添加了一个更安全的session_id。
这篇文章中的信息满足了我的一些好奇心。
注意:前缀长度不视为session.sid_length的一部分。会话ID长度变为“前缀长度” + session.sid_length。总长度必须少于256个字符。
代码:
//SessionRegeneration
function sess_regenration(){
if (session_status() == PHP_SESSION_NONE){
//CreateRandomStringForPrefix
$RandomizerForPreFix = str_split("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
shuffle($RandomizerForPreFix);
$EmptyStringToAppenRandomizer = '';
foreach($RandomizerForPreFix as $Element ){
$EmptyStringToAppenRandomizer .= $Element;
}
//CreateNewSessionIdWithPrefix
$CreatedId = session_create_id($EmptyStringToAppenRandomizer);
session_id($CreatedId);
//StartSession
session_start();
echo session_id();
}
}
答案 0 :(得分:0)
我刚刚意识到,为了使用session_create_id()功能,我必须关闭严格模式,尽管现在我会遇到未经授权的会话ID的问题。仍然不允许未经授权的会话。