访问级别重定向不正常

时间:2016-06-01 01:17:28

标签: php pdo

我的index.php里面有一个登录页面,登录功能运行良好,但问题是对访客和管理员的限制,当我以用户或管理员身份登录时,他们会去那里受人尊敬的页面,但是当我尝试输入时guest.php或admin.php的url他们都可以访问它不应该访问它,我在这里想要发生的是当我以用户身份登录时,用户可以访问与访问者相同的访客页面.. < / p>

的index.php

<?php
include_once 'db.php';

    if($userlevel->is_loggedin()!=""){
        $userlevel->redirect('guest.php');
    }

    if(isset($_POST['submit'])){

       $uname = $_POST['user'];
       $upass = $_POST['pass'];

       if($userlevel->login($uname,$upass)){
          switch($_SESSION['user_level']) {
             case "0": $userlevel->redirect('guest.php');
             break;
             case "1": $userlevel->redirect('admin.php');
             break;
          }
       }
    }

guest.php

<?php
include_once 'db.php';

    if(!$userlevel->is_loggedin()){
       $userlevel->redirect('index.php');
    }
    $ID = $_SESSION['user_session'];
    $stmt = $DB_con->prepare("SELECT * FROM survey_section WHERE ID=:ID");
    $stmt->execute(array(":ID"=>$ID));
    $userRow=$stmt->fetch(PDO::FETCH_ASSOC);      
?>

admin.php的

<?php
include_once 'db.php';

    if(!$userlevel->is_loggedin()){
         $userlevel->redirect('index.php');
    }
    $ID = $_SESSION['user_session'];
    $stmt = $DB_con->prepare("SELECT * FROM survey_section WHERE ID=:ID");
    $stmt->execute(array(":ID"=>$ID));
    $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
?>

我认为我的问题之一就在这里:

if($userlevel->is_loggedin()!=""){
    $userlevel->redirect('guest.php');
}

因为你可以只重定向guest.php,但我不知道怎么把它变成wotk ..

1 个答案:

答案 0 :(得分:1)

您可以检查guest.php和admin.php

中的权限

因为您有一个名为user_level的会话变量,所以您可以在任何页面中获取它的值。这就是你要做的。

<强> guest.php

<?php
  include_once 'db.php';

if($_SESSION['user_level'] == "1"){
   // it means admin
   $userlevel->redirect('admin.php');
}

if(!$userlevel->is_loggedin()){
   $userlevel->redirect('index.php');
}
$ID = $_SESSION['user_session'];
$stmt = $DB_con->prepare("SELECT * FROM survey_section WHERE ID=:ID");
$stmt->execute(array(":ID"=>$ID));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);  ?> 

admin.php

相同
<?php
include_once 'db.php';

   if($_SESSION['user_level'] == "0"){
       // it means guest
       $userlevel->redirect('guest.php');
   }


    if(!$userlevel->is_loggedin()){
         $userlevel->redirect('index.php');
    }
    $ID = $_SESSION['user_session'];
    $stmt = $DB_con->prepare("SELECT * FROM survey_section WHERE ID=:ID");
    $stmt->execute(array(":ID"=>$ID));
    $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
?>