登陆页根据数据库查询数据表后,根据id做判断权限。在设置一个id的验证码,如果有一个用户更改了数据库ID后,通过验证码的验证,可以不能登陆。这个验证在每个页面都有,做一个include()引用它。
怎么写        setcookie('user_type', $row['id'],0, "/", COOKIE_DOMAIN);
        setcookie('subHotel_user_type',md5($row['id']),$Hotel_variables,0,"/",COOKIE_DOMAIN);

解决方案 »

  1.   

    if($_COOKIE[subHotel_user_type]==md5($row['id']),$Hotel_variables){
        .........
    }else{
        .........
    }
      

  2.   


    ......
    $Hotel_variables="jAvAname123";//单独设置一个值$db = create_peardb_handle();
    if($usename && $userpwd)
    {
        $query=$db->query("select * from name where ........;//从数据库查找用户名和密码   
        $row = $query->fetchRow(DB_FETCHMODE_ASSOC);    if(is_array($row))
        {
          
            setcookie('Hotel_user_ID', $row['id'],0, "/", COOKIE_DOMAIN);
            setcookie('subHotel_user_type',md5($row['id']),$Hotel_variables,0,"/",COOKIE_DOMAIN);        echo "<script>window.location='index_bc.php';</script>";exit();//登录成功跳转到index_bc
      

  3.   

    不太明白你的意思,如果是想验证的话,做一个PHP文件include在其他文件前面
    比如:checkcookie.phpif(!isset($_COOKIE['user_type']))
    {
    echo "没有登录";
    exit();
    }
      

  4.   

    我是想做一个验证码,如果有人改了id号 那他就有了原来ID号的权限了,
    做这个验证码后,就算改了ID号,在每次登录的时候都会验证一次,如果成功就继续,
    否则返回登陆页
      

  5.   


    一般权限验证都是在登录的时候从数据库中读取相应权限内容,然后保存在session里面,这样一旦退出登录就失效,如果别人用她的账号重新登录,也没有办法获得其他人的权限。
      

  6.   

    你说的那个我做了,可我是想根据ID取他的权限字段的值,
    比如用户abc,他的权限是2,ID是1,那我想通过查询后取他的ID并判断他的权限。
      

  7.   

    你的ID是登录的时候从数据库取的,而不是登录的时候再从COOKIE中取,只要从数据库取,别人就不能冒充用户了。
    其实这种重要的后台登录,本来就不要把数据保存在COOKIE里,保存在SESSION里关闭浏览器即失效就可以了。
      

  8.   

    判断权限是判断什么权限,跟你设置id验证码有没有关系,没有就略掉,没有关系的流程不要附带
    ps1:你指的更改了数据库id是什么意思?
    ps2:cookie里已经存了原有id,跟md5码意义不是一样吗?
      

  9.   

    我登陆的时候不是要查询数据库么,权限的字段与用户名和密码在一张表中,当我查询用户名和密码的时候,能不能查询到权限字段。
    PS1:如果有的用户非法操作,直接进入数据库中修改你超级用户的ID,那么他岂不是也有这个超级用户的权限了么。所以希望加一个验证ID的验证码.
    我现在是这样写的......
    $Hotel_variables="jAvAname123";//验证码$db = create_peardb_handle();
    if($user_login && $user_pass)
    {
        $query=$db->query("select * from table where user='".mysql_real_escape_string($user_name)."' and pwd='".mysql_real_escape_string($pwd)."'");//从数据库查找用户名和密码   
        $row = $query->fetchRow(DB_FETCHMODE_ASSOC);    if(is_array($row))
        {         setcookie('Hotel_user_type', $row['text'],0, "/", COOKIE_DOMAIN);//获取数据表中text权限字段
            setcookie('user_type', $row['id'],0, "/", COOKIE_DOMAIN);//获取数据表ID
            setcookie('subHotel_user_type',md5($row['id']),$Hotel_variables,0,"/",COOKIE_DOMAIN);//给数据表ID加个验证码        echo "<script>window.location='index_bc.php';</script>";exit();//登录成功跳转到index_bc另外在单独写一个PHP文件,判断如果用户输入的用户名ID与验证码不同,返回首页
    我要在每个页面中用include引用这个PHP文件
    怎么写
      

  10.   

    查询到用户名密码的同时也能查询到权限字段
    如果一个用户都能进入你数据库修改ID了,那么不管你把ID保存在哪里人家都能获得权限
      

  11.   


    我现在
    $query=$db->query("select * from hotel_admin where user='".mysql_real_escape_string($user_login)."' and pwd='".mysql_real_escape_string($user_pass)."'");//从数据库查找用户名和密码   
        $row = $query->fetchRow(DB_FETCHMODE_ASSOC);
      

  12.   

    我登陆的时候不是要查询数据库么,权限的字段与用户名和密码在一张表中,当我查询用户名和密码的时候,能不能查询到权限字段。
    =========
    既然在一张表里,你select *  的时候已经把权限字段取出来了啊
      

  13.   

    另外在单独写一个PHP文件,判断如果用户输入的用户名ID与验证码不同,返回首页
    我要在每个页面中用include引用这个PHP文件
    怎么写我还是不太明白怎么就有了你超级用户的权限了,改id?
    比如你这里说的
    我是想做一个验证码,如果有人改了id号 那他就有了原来ID号的权限了
    难道你是想让用户改了id之后就没有权限了?
      

  14.   

    其实就是做一个验证ID的,这个表中另外有一个字段text权限字段,
    比如 id   name   pwd    text  
             1      aaa     123       0  
    用户aaa是超级用户,如果有人修改了ID 那么他岂不是有了这个text的权限了
      

  15.   

    在登录页里session_start();
    $_SESSION['id']=$row['id'];
    $_SESSION['name']=$row['name'];//用户名
    $_SESSION['text']=$row['text'];//权限在需要用到用户名和权限的页面里session_start();
    echo $_SESSION['name'];//输出用户名
    echo $_SESSION['text'];//输出权限
      

  16.   

    差不多明白了,你指的是如果有人修改$_COOKIE['Hotel_user_type']的话就可以不用登陆也获得权限了吧?那就每次将md5($_COOKIE['Hotel_user_type']).$Hotel_variables与$_COOKIE['subHotel_user_type']作比较呗,等价就返回true,不等就跳转首页
      

  17.   

    ps:貌似现在自动登陆都是把用户名密码存在客户端,登陆时先取cookie,取到则直接验证,取不到则跳转登陆页面,你这样直接把和权限挂钩的id存在客户端,风险得多大啊
      

  18.   

    所以这种后台登录要么就不保存在COOKIE里,每次都需要后台验证好了,否则的话你只要保存在客户端,别人想伪造总有办法,知道你的ID了,难道就不能伪造MD5加密的ID吗