在百度知道问了没得到好的结果。
问题就是。比如说。用户名是admin,用户A已经登录并使用功能.
用户B在用户A登录之后也想登录了。
如果可以做到。用户B无法登录。就算要登录也要等到用户A注销后。才能继续登录。简单的说就类似于论坛那样,一个用户同时只能一个人 在使用。求大鸟上来解答!

解决方案 »

  1.   

    一般就是用sesssion+cookie实现,用数据库也可以,就是在一个用户登录的时候首先是session(在浏览器未关闭的情况下有用),在判断cookie(在开启了cookie的情况下有用),或者判断数据库中的一个登录标识字段(在任何情况下有用),判断的原理,如果这个用户标识的是已经登录了,那么直接转到特定页面(也就是说在此用户已经登录的情况下根本就不显示登录页面),如网站首页等等...
      

  2.   

    加2字段,保存在线状态和session_id。
    非法退出的,就只有以活动时效来决定是否允许后面的登陆。判断时效可以:
    $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文件都会变化,就没必要每次都去操作数据库了
      

  3.   

    <?phpclass 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">账号: &nbsp; <input type="username" name="username" /> &nbsp; <input type="submit" name="login" value="登陆" /></div></td>
    <div style="text-align:center;margin-top:10px">密码: &nbsp; <input type="password" name="password" /> &nbsp; <input type="reset" name="login" value="重置" /></div></td>
    </form>');
    }}?>
    我登录页面的源码是这样的
      

  4.   

    加一个用户的会话表,保存用户的session,并设置一个有效时间就行了
    如果用户时正常退出的就删除会话,如果不是正常退出的就让会话周期过了自动失效
      

  5.   

    数据库开个登录表session_id,user_id,last_action_time每次登录判断登录表中是否存在相同user_id且当前时间减去last_action_time是否大于配置的用户最大停留时间。last_action_time是登录用户每访问一此页面都需更新的时间
      

  6.   


    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,或者将数据库中登录标识字段更改(变更成为登录模式)
    }
      

  7.   

    我能实现,B登陆之后把A踢出去
    就是数据库为该用户设置一个标志位,用户登录时改变一下状态值,并且记下,每次页面跳转的时候就验证是不是记下的那个值。
    这时候B登陆了,把标志位改了,于是A在页面跳转的时候就会出错,强行退出了。。
    我觉得这样才实际,比如QQ,肯定是后登陆的踢掉先前登陆的,
    如果你管理员账号被人盗了,别人登陆在那边,就能永远在线了。而你明知道被盗了,却一点办法没有,不是么?
      

  8.   

    需要维护一个在线用户列表。可以通过数据库或者memcache实现
      

  9.   

    用 ajax 来隔一段时间更新用户的状态。
      

  10.   


    //我只能给你个例子和大致的思路了 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
    }
      

  11.   


    <?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
    }
    ?>
      

  12.   

    session、cookie或数据库都可以实现