在百度知道问了没得到好的结果。
问题就是。比如说。用户名是admin,用户A已经登录并使用功能.
用户B在用户A登录之后也想登录了。
如果可以做到。用户B无法登录。就算要登录也要等到用户A注销后。才能继续登录。简单的说就类似于论坛那样,一个用户同时只能一个人 在使用。求大鸟上来解答!
问题就是。比如说。用户名是admin,用户A已经登录并使用功能.
用户B在用户A登录之后也想登录了。
如果可以做到。用户B无法登录。就算要登录也要等到用户A注销后。才能继续登录。简单的说就类似于论坛那样,一个用户同时只能一个人 在使用。求大鸟上来解答!
非法退出的,就只有以活动时效来决定是否允许后面的登陆。判断时效可以:
$sessionpath = session_save_path();
$user_sessionfile = $sessionpath."/sess_".$db_user_sessionid;$activetime = file_exists($user_sessionfile) ? intval(filemtime($user_sessionfile)) : 0;if(time()-$activetime>30*60){//30分钟的时效
//登陆
}然后在用户每次活动时,在页面里都写上:
$_SESSION['activetime']=time();//确保每次活动后,对应的session文件都会变化,就没必要每次都去操作数据库了
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>');
}}?>
我登录页面的源码是这样的
如果用户时正常退出的就删除会话,如果不是正常退出的就让会话周期过了自动失效
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,或者将数据库中登录标识字段更改(变更成为登录模式)
}
就是数据库为该用户设置一个标志位,用户登录时改变一下状态值,并且记下,每次页面跳转的时候就验证是不是记下的那个值。
这时候B登陆了,把标志位改了,于是A在页面跳转的时候就会出错,强行退出了。。
我觉得这样才实际,比如QQ,肯定是后登陆的踢掉先前登陆的,
如果你管理员账号被人盗了,别人登陆在那边,就能永远在线了。而你明知道被盗了,却一点办法没有,不是么?
//我只能给你个例子和大致的思路了 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
}
<?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
}
?>