Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter-如果用户已登录_Php_Codeigniter - Fatal编程技术网

Php Codeigniter-如果用户已登录

Php Codeigniter-如果用户已登录,php,codeigniter,Php,Codeigniter,我想知道如何检查用户是否已登录,但如果其他具有相同登录信誉的用户尝试登录,请向他们发送消息,说明该用户已在其他地方登录 例如: Pete-以Pete作为用户名,pete1作为密码登录,但Pete将其详细信息提供给朋友使用,而他的朋友Dave尝试使用相同的详细信息进行漫游。同时,它需要向Dave发送消息,说明有人已使用这些详细信息登录 请问这怎么办 我已经有了一个is_logged_in功能,可以检查用户是否登录。您需要一个“用户会话”模型来记录登录的用户 在用户登录时,检查“用户会话”中是否存在

我想知道如何检查用户是否已登录,但如果其他具有相同登录信誉的用户尝试登录,请向他们发送消息,说明该用户已在其他地方登录

例如:

Pete-以Pete作为用户名,pete1作为密码登录,但Pete将其详细信息提供给朋友使用,而他的朋友Dave尝试使用相同的详细信息进行漫游。同时,它需要向Dave发送消息,说明有人已使用这些详细信息登录

请问这怎么办

我已经有了一个is_logged_in功能,可以检查用户是否登录。

您需要一个“用户会话”模型来记录登录的用户

在用户登录时,检查“用户会话”中是否存在会话,如果是,则发送“已登录”消息

然后在用户端建立会话, 然后将会话添加到模型中

注销时, 从用户端和“用户会话”模型销毁会话


这将允许同一用户从多个设备登录,并通知他们。
然而,这可能会让你遇到一个问题,那就是他通常从一个“家庭设备”登录,这样你就不会向他发送“已经登录”的消息了

几年前,我做了一些非常接近这一点的事情,但我的做法有点不同。基本上,我只允许每个用户登录一次,任何后续登录都会导致其他用户会话被破坏

为了让它以这种方式工作,我必须创建一个自定义会话管理器,将用户用户名和会话ID存储在数据库中。然后我所做的就是查找用户是否已经登录,如果已经登录,那么我只是删除了DB会话

您的解决方案可以很容易地通过执行相同的操作来实现,但只需稍微更改逻辑,并防止用户通过查找部分


您所要做的就是扩展CodeIgniter会话类并进行更改,其实也没有那么困难。

将会话记录到数据库将允许您跟踪这一点。看

在页面上搜索“将会话数据保存到数据库”


一旦会话存储在数据库中,您就可以检查该用户名当前是否已登录。不过它也有一个警告-如果用户在关闭浏览器之前没有注销,并且会话没有设置为正确过期,它会告诉您用户已经登录,即使他/她没有登录(取决于会话数据是否存在)。

我通过检查cookie并为用户设置特定cookie解决了这个问题。如果用户的会话cookie与系统的会话cookie不匹配,则会强制该用户退出,并由新用户控制。不过,这可能很烦人

你怎么知道用户没有及时更换电脑?因为我们谈论的是网站,所以你从不保持持续的连接,而是“请求->响应”。你可以做的是在登录时继续轮询服务器,然后说“如果用户上次轮询时间不到30秒,他们肯定已登录”。想要使用此功能的不是我,而是我的客户,也许我应该回去向他们解释,根据你的解释,这样做不值得。感谢H2Oooooo您还可以向您的客户解释,这将实现以下功能:1)这将产生更多的流量,因为您必须保持轮询2)这将不准确(如果他们的计算机冻结或您的服务器在30秒内没有响应怎么办)3)如果您的客户说“他们需要注销”然后考虑有人重新启动他们的电脑,删除他们的cookie等-需要多长时间过期?用户在这段时间内,即使在同一台计算机上也无法登录。是的,我也考虑过这一点,很好,再次感谢您的建议。您有任何示例,我可以看看您是如何实现的吗?