项目基于workerman 的websocket协议。现在想实现一套类似$_SESSION方式来处理用户状态什么的。对于session不算很了解。在workerman上实现session有什么注意点吗? 谢谢。
workerman里面直接利用$connection对象存储对应链接的数据即可。 php的对象有个特性,可以动态给它赋值属性,可以利用这点实现某个客户端的数据存储。
例如动态增加个session属性来存储session信息,就可以类似这样
$worker->onMesssae = function($con, $data) { // data={"type":"login", "user_id":"101", "name":"xxxx"} $data = json_enocde($data, true); // 没设置过session属性,则没登录 if (!isset($con->session)) { // 给链接对象动态增加一个session属性 $con->session = array('user_id'=>$data, 'name'=>$data); } ...
如果是GatewayWorker,则直接可以用$_SESSION设置获取当前链接的session数据
好的。刚刚我用您 这方式实现了,明天测一测。非常感谢。
不客气
这样,如果知道别人的user_id就可以冒充别人登录了
是的,上面为了方便演示,没有加权限验证
workerman里面直接利用$connection对象存储对应链接的数据即可。
php的对象有个特性,可以动态给它赋值属性,可以利用这点实现某个客户端的数据存储。
例如动态增加个session属性来存储session信息,就可以类似这样
如果是GatewayWorker,则直接可以用$_SESSION设置获取当前链接的session数据
好的。刚刚我用您 这方式实现了,明天测一测。非常感谢。
不客气
这样,如果知道别人的user_id就可以冒充别人登录了
是的,上面为了方便演示,没有加权限验证