2016-01-23 59 views
-1

多用戶級別的不同用戶頁面。 我應該在哪裏將這段代碼重定向到每個用戶級別的不同頁面。 也許我有一些錯誤。它應該如何?多用戶級別的不同用戶頁面

 $_SESSION['role'] = $row['role']; 
     if ($_SESSION['role'] == "normalUser") 

    { 
       //do stuff here for users 
       header('Location: memberpage.php'); 
    } 
     else if ($_SESSION['role'] == "profesor") 
            { 
       //do extra stuff here for only profesor 
      header('Location: profesori.php'); 
    } else { 
      header('Location: admin.php'); 

這是user.php的

<?php 
include('password.php'); 
class User extends Password{ 

    private $_db; 

    function __construct($db){ 
     parent::__construct(); 

     $this->_db = $db; 
    } 

    private function get_user_hash($username){ 

     try { 
      $stmt = $this->_db->prepare('SELECT * FROM members WHERE username = :username AND active="Yes" '); 
      $stmt->execute(array('username' => $username)); 

      return $stmt->fetch(); 

     } catch(PDOException $e) { 
      echo '<p class="bg-danger">'.$e->getMessage().'</p>'; 
     } 
    } 

    public function login($username,$password){ 

     $row = $this->get_user_hash($username); 

     if($this->password_verify($password,$row['password']) == 1){ 

      $_SESSION['loggedin'] = true; 
      $_SESSION['username'] = $row['username']; 
      $_SESSION['memberID'] = $row['memberID']; 
      $_SESSION['Fname'] = $row['Fname']; 
      $_SESSION['Lname'] = $row['Lname']; 
      $_SESSION['indeks'] = $row['indeks']; 
      $_SESSION['module'] = $row['module']; 
      $_SESSION['semester'] = $row['semester']; 
      $_SESSION['email'] = $row['email']; 
      $_SESSION['titula'] = $row['titula']; 
      $_SESSION['kabinet'] = $row['kabinet']; 


      return true; 
     } 
    } 

    public function logout(){ 
     session_destroy(); 
    } 

    public function is_logged_in(){ 
     if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true){ 
      return true; 
     } 
    } 

} 


?> 

這是login.php中

<?php 
session_start(); 

require_once('includes/config.php'); 


if($user->is_logged_in()){ header('Location: index.php');exit; } 


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

    $username = $_POST['username']; 
    $password = $_POST['password']; 



    if($row = $user->login($username,$password)){ 
    $_SESSION['username'] = $username; 

     header('Location: memberpage.php'); 
     exit; 

    } else { 
     $error[] = 'Погрешно корисничко име или лозинка, или вашиот акаунт не е активиран.'; 
    } 

} 


$title = 'Најави се'; 


require('layout/header.php'); 
?> 


<div class="container"> 

    <div class="row"> 

     <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3"> 
      <form role="form" method="post" action="" autocomplete="off"> 
       <h2>Ве молиме најавете се!</h2> 
       <p><a href='./'>Врати се на почетна!</a></p> 
       <hr> 

       <?php 
       //check for any errors 
       if(isset($error)){ 
        foreach($error as $error){ 
         echo '<p class="bg-danger">'.$error.'</p>'; 
        } 
       } 

       if(isset($_GET['action'])){ 

        //check the action 
        switch ($_GET['action']) { 
         case 'active': 
          echo "<h2 class='bg-success'>Вашиот акаунт е активиран, можете да се најавите.</h2>"; 
          break; 
         case 'reset': 
          echo "<h2 class='bg-success'>Проверете го вашето сандаче за линкот за промена на лозинка.</h2>"; 
          break; 
         case 'resetAccount': 
          echo "<h2 class='bg-success'>Лозинката е променета, можете да се најавите.</h2>"; 
          break; 
        } 

       } 


       ?> 

       <div class="form-group"> 
        <input type="text" name="username" id="username" class="form-control input-lg" placeholder="Корисничко име" value="<?php if(isset($error)){ echo $_POST['username']; } ?>" tabindex="1"> 
       </div> 

       <div class="form-group"> 
        <input type="password" name="password" id="password" class="form-control input-lg" placeholder="Лозинка" tabindex="3"> 
       </div> 

       <div class="row"> 
        <div class="col-xs-9 col-sm-9 col-md-9"> 
         <a href='reset.php'>Ја заборавивте лозинката?</a> 
        </div> 
       </div> 

       <hr> 
       <div class="row"> 
        <div class="col-xs-6 col-md-6"><input type="submit" name="submit" value="Најави се" class="btn btn-primary btn-block btn-lg" tabindex="5"></div> 
       </div> 
      </form> 
     </div> 
    </div> 



</div> 


<?php 

require('layout/footer.php'); 
?> 

回答

1

首先,我會建議你改一下角色管理/教授,一切應以學生的態度(它更安全,因爲在你的情況下,如果你忘記添加角色,用戶將默認爲admin)。

我的第二個建議是,您應該驗證會話中的用戶是否真的是用戶對象,而不僅僅是登錄值。這個驗證也應該在User類中。

和login.php文件代碼看起來不對。您必須使用User類,並且您應該通過此對象完成登錄,會話值管理和檢查角色。

最後你的問題 - 重定向到特定的頁面應該在登錄表單處理。

相關問題