有时候我们须要禁止用户重复登录的限定功能,此功能不同于单点登录,单点登录百度上先容,单点登录(Single Sign On),简称为 SSO,是目前比较盛行的企业业务整合的办理方案之一。SSO的定义是在多个运用系统中,用户只须要登录一次就可以访问所有相互信赖的运用系统。这只是提醒不要稠浊。那言归正传,
首先须要用到表 会员表要用到的字段,用户名,末了登录韶光,session_id,有须要可以加上ip(这里就不先容)
登录文件代码 login.php
$username=$_REQUEST['username'];
//必须开启session才能获取session_id 否则将为空
session_start();
$session_id = session_id();
//查看用户的session_id 如果为空则重新天生
$sql=\"大众update \"大众.$ecs->table('users').\"大众 set session_id='{$session_id}' where
user_name='{$username}'\公众;
$db->query($sql);
//将session_id和用户名存储到session中
$_SESSION['s_id']=$session_id;
$_SESSION['u_name']=$username;
本网站引用的公共文件,加入下面的session验证代码(验证session_id是否过期,或是否同等。)
$u_name=$_SESSION['u_name'];
if($u_name){
//查看session_id,登录韶光
$sql_id=\"大众select session_id,last_login from \"大众.$ecs->table('users').\"大众 where
user_name='{$u_name}'\"大众;
$ss=$db->getRow($sql_id);
$time=time();
//如果登录韶光超过自己指定的韶光可以逼迫下线重新登录
if(($time-$ss['last_login']) > 1800){
//修正session_id
$sql=\"大众update \"大众.$ecs->table('users').\公众 set session_id='' where
user_name='{$u_name}'\"大众;
$db->query($sql);
echo \"大众<script> window.location.href='http://localhost/user.php?act=logout';
alert('您已经上岸超时请重新上岸');</script>\"大众;
}
}
//如果数据库session_id和当前获取的session_id不一致提示已经登录
if($ss['session_id'] != $_SESSION['s_id']){
echo \"大众<script> window.location.href='http://localhost/user.php?act=logout';
alert('您已经在其他地区上岸');</script>\"大众;
}
作者:吾林爱分享