2013-07-05 40 views
0

嗨,我正在創建一個基於用戶級別的導航系統。我所做的代碼沒有顯示任何錯誤,但沒有顯示菜單。我不知道我哪裏出錯了。我搜索這種菜單,但我找不到任何解決方案。任何人都可以排除我犯的錯誤嗎?或者告訴我是否還有其他方法可以做到這一點?基於用戶級別的導航菜單

這是我的代碼。

<html> 
<head> 
<title>Index</title> 
</head> 
    <body> 

<!--database connection--> 

<?php 
//error_reporting(0); 
'session_start()'; 
$con = new mysqli('localhost', 'username', 'password', 'database'); 
if($con->connect_errno > 0){ 
    die('Sorry, We\'re experiencing some connection problems.'); 
} 
?> 

<!--functions--> 

<?php 
    function loggedin(){ 
     if(isset($_SESSION['user_id'])){ 
      return true; 
     }else{ 
      return false; 
     } 
    } 
?> 


<!--titlebar--> 

<div> 
    <?php 
     if(loggedin()){ 
      $my_id=$_SESSION['user_id']; 
      $log=$con->prepare("SELECT username,user_level FROM users WHERE user_id='$my_id'"); 
      $log->execute; 
      $log->bind_result($username, $user_level,$my_id); 
      $log->store_result; 
      if($log->fetch()) //fetching the contents of the row 
      { 
       if($user_level=='a'){?> 
        <a href = 'index.php'>Home</a> 
        <a href = 'admin.php'>Admin</a> 
        <a href = 'index.php'>Log Out</a> 
       <?php 
       }if($user_level=='m'){?> 
        <a href = 'index.php'>Home</a> 
        <a href = 'profile.php'>Profile</a> 
        <a href = 'index.php'>Log Out</a> 
       <?php 
       }else{?> 
        <a href = 'index.php'>Home</a> 
        <a href = 'login.php'>Login</a> 
        <a href = 'register.php'>Register</a> 
      <?php 
      } 
     } 
     } 
    ?> 

</div> 
Index 
</body> 
</html> 

我對我的登錄頁面使用了相同的方法,它工作正常。這是我的登錄頁面代碼。

<html> 
<head> 
<title>LOGIN</title> 
</head> 
<body> 
<?php include 'connect.php';?> 
<?php include 'functions.php';?> 
<?php include 'titlebar.php';?> 

<h3>LOGIN HERE:</h3> 
<form action ="" method="post"> 

User Name:<br/> 
<input type='text' name='username' /> 
<br/><br/> 
Password:<br/> 
<input type='password' name='password' /> 
<br/><br/> 
<input type='submit' name='submit' value='login'> 
</form> 
<?php 

if(isset($_POST['submit'])){ 
    $username = $_POST['username']; 
    $password = md5($_POST['password']); 


    $stmt = $con->prepare("SELECT user_id, username, password, status FROM users WHERE username=? AND password=? LIMIT 1"); 
    $stmt->bind_param('ss', $username, $password); 
    $stmt->execute(); 
    $stmt->bind_result($user_id, $username, $password, $status); 
    $stmt->store_result(); 
    if($stmt->num_rows == 1) //To check if the row exists 
     { 
      if($stmt->fetch()) //fetching the contents of the row 
      { 
       if ($status == 'd') { 
        echo "YOUR account has been DEACTIVATED."; 
        exit(); 
       } 
       if ($status == 'b') { 
        echo "YOUR account has been BANNED."; 
        exit(); 
       } 
       if ($status == 'n') { 
        echo "YOUR account has NOT YET BEEN ACTIVATED."; 
        exit(); 
       } 
       else { 
        $_SESSION['Logged'] = 1; 
        $_SESSION['user_id'] = $user_id; 
        $_SESSION['username'] = $username; 
        echo 'Success!'; 
        exit(); 
       } 
      } 

    } 
    else { 
     echo "INVALID USERNAME/PASSWORD Combination!"; 
    } 
    $stmt->close(); 
} 
else 
{ 

} 
$con->close(); 

?> 
</body> 
</html> 

任何幫助將是appartiated。

謝謝。

回答

0

所以,它看起來像的loggedIn()功能不起作用

  1. 你是否已經登錄?
  2. 'session_start'; =====>你有沒有在這裏session_start()? (如果是的話,不要忘記任何輸出之前啓動會話例如,就在使用「HTML」標籤。)

UPD:

  1. 你應該先登錄
  2. 你已啓動會話
  3. 有處理的mysqli對象,並聲明瞭一些其他問題。

我編輯的代碼,使其工作並提出一些意見進去。 看看這裏

http://pastebin.com/Za1V0VES

+0

,我沒見過的loggedIn但反正它應該註冊和登錄菜單,但沒有顯示。並且該會話是一個排字錯誤 – Kishore

+0

當然,它不會顯示任何菜單,因爲if(loggedin()){...}將永不會返回TRUE。如果我們談論工作登錄頁面,那麼你最好顯示包含文件的來源 – eh0t

+0

那些包含文件在這個頁面上的第一個代碼部分 – Kishore

0

好。下面是我明白你的問題:你需要一定的多個環節中您的導航根據用戶的級別,從而顯示:可以,如果管理員在隨後登錄這些鏈接應當顯示,或者如果frontdesk被記錄在隨後那些鏈接應顯示。

如果是這樣,那麼這裏是你如何做到這一點,而我是怎麼做的:

<?php 
//Start session 
    session_start(); 

    //Check whether the session variable SESS_MEMBER_ID is present or not 
    if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) { 
     header("location: index.php"); 
     exit(); 
    } 

if($_SESSION['SESS_FIRST_NAME']=="admin"){ 

/*Your Links go here*/ 

} 

if($_SESSION['SESS_FIRST_NAME']=="frontdesk"){ 

/*Your links go here*/ 

}?> 

這裏是我的login.php

<?php 
    //Start session 
    session_start(); 

    //Connect to mysql server 
    /* Database connection goes here*/ 

    //Function to sanitize values received from the form. Prevents SQL injection 
    function clean($str) { 
     $str = @trim($str); 
     if(get_magic_quotes_gpc()) { 
      $str = stripslashes($str); 
     } 
     return mysql_real_escape_string($str); 
    } 

    //Sanitize the POST values 
    $login = clean($_POST['user']); 
    $password = clean($_POST['password']); 

    //Create query 
    $qry="SELECT * FROM user WHERE username='$login' AND password='$password'"; 
    $result=mysql_query($qry); 

    //Check whether the query was successful or not 
    if($result) { 
     if(mysql_num_rows($result) > 0) { 
      session_regenerate_id(); 
      $member = mysql_fetch_assoc($result); 
      $_SESSION['SESS_MEMBER_ID'] = $member['user_id']; 
      $_SESSION['SESS_FIRST_NAME'] = $member['position']; 
      session_write_close(); 
      header("location: home_admin.php"); 
      exit(); 

     }else { 
      //Login failed 
      header("location: admin_index.php"); 
      exit(); 
     } 
    }else { 
     die("Query failed"); 
    } 
?> 
0

嘗試使用回聲

<!--titlebar--> 
<div> 
<?php 
    if(loggedin()){ 
     $my_id=$_SESSION['user_id']; 
     $log=$con->prepare("SELECT username,user_level FROM users WHERE user_id='$my_id'"); 
     $log->execute; 
     $log->bind_result($username, $user_level,$my_id); 
     $log->store_result; 
     if($log->fetch()) //fetching the contents of the row 
     { 
      if($user_level=='a'){ 
       echo " 
       <a href = 'index.php'>Home</a> 
       <a href = 'admin.php'>Admin</a> 
       <a href = 'index.php'>Log Out</a> 
       "; 
      }if($user_level=='m'){ 
       echo " 
       <a href = 'index.php'>Home</a> 
       <a href = 'profile.php'>Profile</a> 
       <a href = 'index.php'>Log Out</a> 
       "; 
      }else{ 
       echo " 
       <a href = 'index.php'>Home</a> 
       <a href = 'login.php'>Login</a> 
       <a href = 'register.php'>Register</a> 
       "; 
      } 
     } 
    } 
?>