Php 创建会话时获取会话id

Php 创建会话时获取会话id,php,session,Php,Session,我正在创建授权。在会话中,我想保留用户id,但理论上我可以在我的pc上打开会话文件,并将此id和沙子更改为服务器。因此,我想从md5中的会话id+我的id创建一些额外的安全密钥,但是当我尝试获取会话id$security\u key=session\u id($\u session['user\u id'))时我得到: 警告:未知:会话id太长或包含非法内容 字符,有效字符为a-z、a-z、0-9和“-,”在未知位置 第0行警告:未知:无法写入会话数据(文件)。请 验证session.save_

我正在创建授权。在会话中,我想保留用户id,但理论上我可以在我的pc上打开会话文件,并将此id和沙子更改为服务器。因此,我想从md5中的会话id+我的id创建一些额外的安全密钥,但是当我尝试获取会话id
$security\u key=session\u id($\u session['user\u id'))时我得到:

警告:未知:会话id太长或包含非法内容 字符,有效字符为a-z、a-z、0-9和“-,”在未知位置 第0行警告:未知:无法写入会话数据(文件)。请 验证session.save_路径的当前设置是否正确 (/Users/Sites/demo/sessions/)位于第0行的未知位置


更新:非常感谢,不过我自己刚刚解决了。正确版本的会话id(用户id)

如果您想创建会话令牌,只需使用以下内容:

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

如果您担心有人更改主机上的会话变量,您应该考虑使用会话处理程序将会话变量存储在数据库中。

会话id中不允许使用所有字符。例如,文件会话处理程序只允许范围为a-z a-z 0-9(逗号)和-(减号),这可能是你的问题吗…?会话id($\u会话['userid'])-同样的狗屎…不,只是来自用户端。但是这个想法的本质是,我使用会话id来代替randomlol,它是随机的、大的,只在会话时间内存在,并且对于每个会话都是唯一的。尽管如此,如果您使用的是session_regenate_id(),您需要小心;