PHP如何实现同一个帐号不允许同时登陆呢? 基于mysql+php实现,尽量减少数据包的开销。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、用户登录时建存一个以该用户命名的密钥文件,如“路径/urlencode(用户名).txt”,同时写入一随机字符串,该字符串同时存入cookie,验证用户身份时对比二者。2、当同时异地有登录时,上述密钥文件必然更改,则前者登录失效。 前一个用户登录的不是保存了session吗?后一个用户登录的时候你就可以判断session值啊,如果存在就不让登录。//第一次登录保存session值$_SESSION['user']=$_POST['username']; //这里一般这么写,你也可以用你自己的保存方式,加个常量都行。//第二次登录判断if($_SESSION['user'] && $_SESSION['user']==$_POST['username']){ //此处的$_POST['username']为第二个用户输入的用户名 echo '改用户名已登录'; }else{ echo '登录成功'; $_SESSION['user']=$_POST['username'];} 更正,忘了写退出://第一次登录保存session值 $_SESSION['user']=$_POST['username']; //这里一般这么写,你也可以用你自己的保存方式,加个常量都行。 //第二次登录判断 if($_SESSION['user'] && $_SESSION['user']==$_POST['username']){ //此处的$_POST['username']为第二个用户输入的用户名 echo '该用户名已登录'; exit(); }else{ echo '登录成功'; $_SESSION['user']=$_POST['username'];} 已经登录帐号Js.Ajax 定时发送数据库记录时间,新帐号登录时判断多长时间没有刷新数据库时间算掉线 /关闭浏览器等.然后做相应的动作. 这样做比较耗资源 但是最完美了 加个在线判断字段。0离线,1在线。登录后,session[name]=name,session[online]=1当该账号session[online]=1时,不允许重复登录。就可以实现你的这个功能了。前面有人在同一个浏览器下设定,其实不需要。 可以在数据库设置两个字段:是否登录,最后一次操作时间。新登录的时候看是否已登录,并判断最后一次操作时间是否超过session时间。不过这样每次操作都需要改变数据库,可能会有性能影响。 估计不能用php自己的$_SESSION,可以用mysql自己维护session,当前一个用户登录后,以用户id为主键创建一条记录,第二个用户再登录,只要在数据库中存在这个用户id,就可以禁止登录,否则允许登录。 有没有想过这样做的后果?如果你session时间定为1个小时: 我登陆了,死机了,我重启,登陆,被拒绝必须要等一个小时才能重新登陆? 我也同意可能会出现这个问题,所以我觉得应该跟踪记录用户的ip地址,否则像这种网页的东西一不小心关了,用户浏览器设置的是关闭清除缓存,那么就彻底悲剧了,一登陆就同一账户已经登录。可以在数据库里面存一个ip的表。 跟php替你做的一样,定时清理啊,本来就是用mysql自维护session,当然这部分要自己来做了。比如每15分钟清理一次不活动的用户,用户下线即时清理,用户每刷新一次页面要重新写一次表记录状态,数据表用mem格式。觉得占资源,不用mysql,直接用memcache。 承接2楼:异地登录判断“路径/urlencode(用户名).txt”的生成时间filemtime('路径/urlencode(用户名).txt'),比如,前者登录如超过1小时(假设1小时),就可以把前者挤掉,不足1小时,异地登录不上。 session 知道不呢 楼上有说了 支持用memcache 共享session 登陆是去memcache 里面判断是否存在此用户的session信息..... 将用户登录信息保存到Memcached中,再使用Cookies在客户端记录登录状态并存入Memcached中,当第二个用户登录时,判断一下账号是否已经登录,再进行后续操作 顶2楼的做法.而且用户体验上也是如此.而判断函数可以用时间文件函数filemtime来判断是否被修改,这个是以空间换效率的一个方法,不过一个文件对应一个账号,对空间需求太高了.如果能在空间上解决,这个问题就完美了. 2楼的方法应该是比较好的了,虽然没有达到楼主的要求,但是我觉得还是应该后登陆的挤掉前面的。。这个逻辑比较正常。其它方法不管是session还是Memcached都需要判断有效期的问题,如果长时间不操作,就自动掉线了要是有效期过长的话,你关闭浏览器不做退出操作,又产生问题了。。 学习2L的方法,lz的想法不合理 在手动搭建WAMP时,解压phpMyAdmin文件到htdocs时出现phpmyadmin配置错误 html,php等的文件头问题 网页自动登录 如何配置PHP环境? 一个数组的数学问题,请进. 在下的网站两个版本,不知取舍? 请问这是为什么?? 請教SQL問題,急!!!!! 新手问题:如何用php上传一个目录(目录层次不确定)! PHP未定义数组索引 传值问题,很急,求各位帮忙 iframe 实现 php下载文件 的实例代码怎么网上找不到
2、当同时异地有登录时,上述密钥文件必然更改,则前者登录失效。
//第一次登录保存session值
$_SESSION['user']=$_POST['username']; //这里一般这么写,你也可以用你自己的保存方式,加个常量都行。//第二次登录判断
if($_SESSION['user'] && $_SESSION['user']==$_POST['username']){ //此处的$_POST['username']为第二个用户输入的用户名
echo '改用户名已登录';
}else{
echo '登录成功';
$_SESSION['user']=$_POST['username'];
}
$_SESSION['user']=$_POST['username']; //这里一般这么写,你也可以用你自己的保存方式,加个常量都行。 //第二次登录判断
if($_SESSION['user'] && $_SESSION['user']==$_POST['username']){ //此处的$_POST['username']为第二个用户输入的用户名
echo '该用户名已登录';
exit();
}else{
echo '登录成功';
$_SESSION['user']=$_POST['username'];
}
已经登录帐号Js.Ajax 定时发送数据库记录时间,新帐号登录时判断多长时间没有刷新数据库时间算掉线 /关闭浏览器等.然后做相应的动作. 这样做比较耗资源 但是最完美了
不允许重复登录。就可以实现你的这个功能了。前面有人在同一个浏览器下设定,其实不需要。
将用户登录信息保存到Memcached中,再使用Cookies在客户端记录登录状态并存入Memcached中,当第二个用户登录时,判断一下账号是否已经登录,再进行后续操作