PHP单用户登录限制

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

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

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

求大鸟上来解答!
...全文
1613 点赞 收藏 26
写回复
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
贴个源码。
光说我可不知道怎么写。
谢了
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告