我正在开发一个基于订阅的项目,并且帐户需要每个用户限制为2个并发会话。
我有一些想法,但我不完全确定如何做到这一点,也许有一些内置的方式来做这个,我不知道。
欢迎任何建议。
我在想如果我将会话驱动程序切换到数据库然后扩展Auth或Session驱动程序以在会话表中存储一些额外的信息,比如用户ID,这会有点容易要做。
不完全确定如何做到这一点,所以任何帮助都将非常感谢!
答案 0 :(得分:1)
我想你在谈论来自不同IP /设备的多重登录?这就是我现在想的。你不能计算“浏览器标签”或类似的东西......
因此,如果您的情况如此,那么您的解决方案就很容易了。将任何用户登录绑定在数据库或其他持久性中的活动记录上。
DB-型号:
userSession (
'id', // primary key
'userId', //foreign key
'sid', //unique session id
'ip', //unique user id or uniqure device (I preffer IP!)
'login', //datetime
'lastClick' //datetime
);
如果存在该用户的db中的活动记录,则会打开活动会话。您需要检查任何用户操作的给定db用户记录(我认为是HTTP-Request)。您现在可以为一个用户计算活动用户会话。您现在也可以通过删除依赖的userSession记录来启动用户。
答案 1 :(得分:0)
这可以通过sql在表中使用UPDATE并将列设置为活动会话并且php检查会话是否超过2,如果它们拒绝登录,或者以其他方式实现。
<?php
function checkSessions(){
mysql_connect(data);
$q = "SELECT * FROM users WHERE username=$username && password=$password";
while($row = mysql_fetch_array($q)){
if($row["Active Sessions"] >2){
die("There are too many people using the account right now");
}
你明白这是一个样本。