PHP单用户登录限制

hkhdgj 2010-08-04 05:03:37
在百度知道问了没得到好的结果。
问题就是。

比如说。用户名是admin,用户A已经登录并使用功能.
用户B在用户A登录之后也想登录了。
如果可以做到。用户B无法登录。就算要登录也要等到用户A注销后。才能继续登录。

简单的说就类似于论坛那样,一个用户同时只能一个人 在使用。

求大鸟上来解答!
...全文
2020 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
ming0753 2012-05-19
  • 打赏
  • 举报
回复
session、cookie或数据库都可以实现
hkhdgj 2010-08-06
  • 打赏
  • 举报
回复
自己顶下期待牛人
kyzy_yy_pm 2010-08-05
  • 打赏
  • 举报
回复

<?php
if(!isset($_SESSION))session_start();

if(isset($_POST['username'], $_POST['password'])){//【1】
if(($_POST['username'] == 'root') && ($_POST['password'] == 'root')){
$_SESSION['username'] = 'root';//将账号信息存到session中或者cookie中,或者更改数据库中登录标识,将其变成登录的状态
$_SESSION['password'] = 'root';
}
}

if(isset($_SESSION['username']) && $_SESSION['username']){//这个地方可以用cookie判断(同session一样$_COOKIE['username']),也可以查询数据库中的一个登录标识字段
echo '你已经登录了,不用再登录了';exit;
}else{//如果当前没有用户登录(当然了,说的是你这一台机器),那么前往登录页面,登录页面submit->【1】处
?>
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" name="submit">
</form>
<?php
}
?>
kyzy_yy_pm 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hkhdgj 的回复:]
#13测试过了貌似没有效果
[/Quote]



//我只能给你个例子和大致的思路了

if(!isset($_SESSION))session_start();

if(isset($_POST['username'], $_POST['password'])){//【1】
if(($_POST['username'] == 'root') && ($_POST['password'] == 'root')){
$_SESSION['username'] = 'root';//将账号信息存到session中或者cookie中,或者更改数据库中登录标识,将其变成登录的状态
$_SESSION['password'] = 'root';
}
}

if(isset($_SESSION['username']) && $_SESSION['username']){//这个地方可以用cookie判断(同session一样$_COOKIE['username']),也可以查询数据库中的一个登录标识字段
echo '你已经登录了,不用再登录了';exit;
}else{//如果当前没有用户登录(当然了,说的是你这一台机器),那么前往登录页面,登录页面submit->【1】处
?>
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" name="submit">
</form>
<?php
}
YHL27 2010-08-05
  • 打赏
  • 举报
回复
learning....
hkhdgj 2010-08-05
  • 打赏
  • 举报
回复
回22楼的
你这源码。换一台机器就可以登录了。

我写法问题还是?
求纠正
床上等您 2010-08-04
  • 打赏
  • 举报
回复
用 ajax 来隔一段时间更新用户的状态。
tabris17 2010-08-04
  • 打赏
  • 举报
回复
需要维护一个在线用户列表。可以通过数据库或者memcache实现
hkhdgj 2010-08-04
  • 打赏
  • 举报
回复
源码在8楼 期待 大鸟出现
W379901369 2010-08-04
  • 打赏
  • 举报
回复
php有点看不懂~~~~~~~~呵呵 在学习了
hkhdgj 2010-08-04
  • 打赏
  • 举报
回复
#13测试过了貌似没有效果
若非零落 2010-08-04
  • 打赏
  • 举报
回复
我能实现,B登陆之后把A踢出去。。。
就是数据库为该用户设置一个标志位,用户登录时改变一下状态值,并且记下,每次页面跳转的时候就验证是不是记下的那个值。
这时候B登陆了,把标志位改了,于是A在页面跳转的时候就会出错,强行退出了。。
我觉得这样才实际,比如QQ,肯定是后登陆的踢掉先前登陆的,
如果你管理员账号被人盗了,别人登陆在那边,就能永远在线了。而你明知道被盗了,却一点办法没有,不是么?
kyzy_yy_pm 2010-08-04
  • 打赏
  • 举报
回复

if(!isset($_SESSION))session_start();
//前往某个页面的时候,如登录页面的时候,session起作用(或者cookie或者数据库)
if(isset($_SESSION['username']) && $_SESSION['username'] == 'root' && $_SESSION['password'] == 'root'){
header('location: index.php');//直接跳过登录前往首页(或其他页面)
}else{
//显示登录页面(如果模板的话,显示模板,如login.html),在这个登录页面提交的对应的php判断中要给对应的用户的session赋值,或者生成cookie,或者将数据库中登录标识字段更改(变更成为登录模式)
}
kyzy_yy_pm 2010-08-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hkhdgj 的回复:]
PHP code
<?php

class n0ise_func_login {
var $content;
function run() {
global $_n0ise;
if($_POST['login']) {
if($_POST['username'] == $_n0ise->admin_userna……
[/Quote]楼主的代码和要实现的功能思路上就不一样
foolbirdflyfirst 2010-08-04
  • 打赏
  • 举报
回复
数据库开个登录表

session_id,user_id,last_action_time

每次登录判断登录表中是否存在相同user_id且当前时间减去last_action_time是否大于配置的用户最大停留时间。last_action_time是登录用户每访问一此页面都需更新的时间
xiaocai520 2010-08-04
  • 打赏
  • 举报
回复
加一个用户的会话表,保存用户的session,并设置一个有效时间就行了
如果用户时正常退出的就删除会话,如果不是正常退出的就让会话周期过了自动失效
hkhdgj 2010-08-04
  • 打赏
  • 举报
回复
各位大鸟看下 ,然后回答一下我
谢了
hkhdgj 2010-08-04
  • 打赏
  • 举报
回复
<?php

class n0ise_func_login {
var $content;
function run() {
global $_n0ise;
if($_POST['login']) {
if($_POST['username'] == $_n0ise->admin_username)
if($_POST['password'] == $_n0ise->admin_password)
{
$_SESSION['admin_username'] = $_n0ise->admin_username;
$_SESSION['admin_password'] = $_n0ise->admin_password;
$_SESSION['loggedin'] = true;
header("Location: index.php");
die();
}else $this->content .= content("用户名或密码错误!", "error");

}
$this->content .=content('<form method="post">
<div style="text-align:center;margin-top:10px">账号:   <input type="username" name="username" />   <input type="submit" name="login" value="登陆" /></div></td>
<div style="text-align:center;margin-top:10px">密码:   <input type="password" name="password" />   <input type="reset" name="login" value="重置" /></div></td>
</form>');
}

}

?>


我登录页面的源码是这样的
heyli 2010-08-04
  • 打赏
  • 举报
回复
五楼方法不错 学习了
hkhdgj 2010-08-04
  • 打赏
  • 举报
回复
贴个源码。
光说我可不知道怎么写。
谢了
加载更多回复(5)
安装原版通达OA2015试用版,通达官网下载。 下载此破解补丁,解压并覆盖myoa/webroot,即可! 软件名称: Office Anywhere 2015版 皇冠集群版 对应版本的说明 版权所有: 北京通达信科科技有限公司 http://www.tongda2000.com PHP代码版本号: 8.3.150416 数据库数据版本号: 8.3.150416 通达Web核心管控服务版本: 2015.03.16 通达即时通讯服务版本: 2015.03.16 通达邮件服务版本: 2015.03.27 通达POP3服务版本: 2015.03.16 通达全文检索服务版本: 2015.03.16 通达Redis缓存数据库服务版本: 2015.04.16 通达定时任务服务版本: 2015.03.16 通达监控服务版本: 2015.03.16 通达手机短信服务版本: HTTP服务器软件: nginx/PHP 5.3.29 HTTP端口号: 8000 数据库软件: MySQL 5.5.36 标准版(由Oracle公司正版授权) 软件安装路径: D:\MYOA 用户位: 实际用户数: 允许登录用户1,禁止登录用户0,合计1(禁止登录用户不限制人数),其中允许移动版登录用户1,仅允许移动版登录用户0 软件注册: 已注册 已注册可选组件: 手机短信,CRM系统,EA进销存,财务管理,T-ERP自定义应用,即时通讯,通讯监控,互联互通组件,附件加密组件,三员安全管理组件,手机签章组件,手机考勤组件,手机应用商店组件 OA用户数限制: 不限制 IM用户数限制: 不限制 T-ERP自定义应用数限制: 不限制 分支机构数限制: 不限制 互联互通组件节点数限制: 不限制 数据交换平台节点数限制: 不限制

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧