2015-10-04 113 views
1

我正在構建一個網站,我想檢索在數據庫中定義的用戶類型並將登錄用戶重定向到特定頁面。例如,如果用戶是管理員,將那個人重定向到管理頁面,如果用戶類型爲X,將用戶重定向到用戶類型X.如何從php數據庫的數據庫中獲取用戶類型

的特定頁面現在,我正在努力因爲我沒有足夠的時間直到截止日期(明天),所以是一個臨時解決方案。我試圖通過運行一個數據庫和PHP的查詢,這是按如下方式從數據庫中獲取用戶類型:

   $_SESSION['login'] = true; 
      $_SESSION['username']=$username; 
      $query="select user_type from ".$table_name." where username='$username'"; 
      $result=mysqli_query($con,$query) or die('error'); 
      if(mysqli_num_rows($result)) 
      { 
       $_SESSION['user_type']=$user_type; 
      } 

      echo json_encode(array('result'=>1)); 

我能得到的用戶名和登錄狀態,但是當我試着去獲取用戶類型,我在_SESSIONS數組上得到一個空的結果。

全PHP代碼如下:

<?php 
session_start(); 
    include("db.php"); 
    $con=mysqli_connect($server, $db_user, $db_pwd,$db_name) //connect to the database server 
    or die ("Could not connect to mysql because ".mysqli_error()); 

    mysqli_select_db($con,$db_name) //select the database 
    or die ("Could not select to mysql because ".mysqli_error()); 

    //prevent sql injection 
    $username=mysqli_real_escape_string($con,$_POST["username"]); 
    $password=mysqli_real_escape_string($con,$_POST["password"]); 
    //$user_type=mysqli_real_escape_string($con,$_POST["user_type"]); 
     //decrypt password 


    //check if user exist already 
    $query="select * from ".$table_name." where username='$username'"; 
    $result=mysqli_query($con,$query) or die('error'); 
    if (mysqli_num_rows($result)) //if exist then check for password 
     { 

     //Pickup password to compare with encrypted password 
     $query="select password from ".$table_name." where username='$username'"; 
     $result=mysqli_query($con,$query) or die('error'); 
     $db_field = mysqli_fetch_assoc($result); 
     $hashed_password=crypt($password,$db_field['password']); 

     $query="select * from ".$table_name." where username='$username' and password='$hashed_password'"; 
     $result=mysqli_query($con,$query) or die('error'); 
     if (mysqli_num_rows($result)) //if passwords match then check actvation status 
     { 
      $query="select * from ".$table_name." where username='$username' and password='$hashed_password' and activ_status in(1)"; 
      $result=mysqli_query($con,$query) or die('error'); 
      if(mysqli_num_rows($result)) 
      { 


       $_SESSION['login'] = true; 
       $_SESSION['username']=$username; 
       $query="select user_type from ".$table_name." where username='$username'"; 
       $result=mysqli_query($con,$query) or die('error'); 
       if(mysqli_num_rows($result)) 
       { 
        $_SESSION['user_type']=$user_type; 
       } 

       echo json_encode(array('result'=>1)); 
      } 
      else 
      { 
      echo json_encode(array('result'=>"$msg_email_1 <br /><a href=\"".$url."\\resend_key.php?user=".$username."\">$msg_email_2</a>.")); 
       // echo "User Account not yet activated.Check your mail for activation details."; 
      } 

     } 
     else 
     { 
     echo json_encode(array('result'=>$msg_pwd_error)); 
     // echo trim("password incorrect"); 
     } 
     } 
    else 
    { 
    echo json_encode(array('result'=>$msg_un_error)); 
    // die("Username Doesn't exist"); 
    die(); 
    } 

?> 

如果你能幫助我,我真的很感激。

非常感謝。

回答

2

$_SESSION['user_type'] = $user_type但什麼是$user_type?你沒有在任何地方初始化它,所以沒有任何東西會被存儲在$_SESSION['user_type']

你必須首先從數據庫中獲取結果,結果的值賦給變量$user_type之前,你可以存儲它。

$row = mysqli_fetch_assoc($result); 
$user_type = $row['user_type']; 
+0

OH YES!這是一個非常大的錯誤!我的大腦在這些晚上幾乎沒有工作:)) 但是,我仍然得到一個空的結果。 我已經改變的代碼爲以下幾種類型:。 1)$查詢= 「選擇從USER_TYPE」 $表格名 「其中username = '$用戶名'」; \t \t \t \t $結果= mysqli_query($ CON,$查詢)或死亡( '錯誤'); \t \t \t \t而($行= mysqli_fetch_assoc(結果)) \t \t \t \t { \t \t \t \t \t $ USER_TYPE = $行[ 'USER_TYPE']; \t \t \t \t \t $ _SESSION ['user_type'] = $ user_type; \t \t \t \t} 2)我把$ _SESSION部分取出while狀態。 3)我只把$ _SESSION部分放在while條件中。 他們都沒有工作:/ –

+0

'$ user_type'是否也是空的,還是隻是'$ _SESSION ['user_type']'這是空的? – Zsw

+0

user_type爲空。我找到了一種解決方法。我添加了一個虛擬頁面,它將從$ _SESSION中檢索用戶名,並通過mysql命令請求用戶類型,並根據用戶類型立即重定向頁面。我不知道這件事情如何在同一頁面上工作,但在虛擬頁面上工作。但是,只要它正在工作,並且由於我已經接近截止日期的小時,我現在將使用這種方法並在稍後處理。但是,您的評論讓我意識到我的主要錯誤。非常感謝您的幫助,我真的很感激! :) –

相關問題