2016-01-21 18 views
0

雖然我想添加用戶訪問級別,但具有管理員訪問權限的用戶可以登錄常規用戶無法訪問的頁面,但我的登錄和註冊系統工作正常。我有我的代碼迴應,所以我知道它現在是否真的有效。使用會話數組的PHP訪問級別系統

這是我使用的代碼:

echo("Hello $_SESSION[user]"); 

if ($_SESSION['user']==1) { 
    echo "You have admin access"; 
} else { 
    echo "You're a regular user"; 
} 

所以基本上,如果用戶在數據庫級別1,他們是管理員,在下面的人是一個普通用戶。

問題是,它永遠不會奏效,它總是顯示「你是一個普通用戶」

而且我的代碼:

echo("Hello $_SESSION[user]"); 

回聲的這項「你好ArrayYou're普通用戶」

我知道我的登錄系統有爲用戶設置的會話,但它表示它是一個數組。

這裏是我的登錄頁面,我沒有做它,因爲我是新來的PHP:http://pastebin.com/h0zqnNSe

而對任何人是好奇,我知道我的數據庫中的水平行工作,因爲我已經迴應說出來細使用其他腳本,你可以看到here

+0

喲可以做'的print_r($ _ SESSION)'?如果我的猜測是正確的......你可以試着'echo(「Hello {$ _SESSION ['user']}」); ' – roullie

+0

@roullie是的,它顯示了我的所有信息正確地從數據庫中,例如:你是一個普通的userArray([用戶] =>數組([id] => 1 [用戶名] => FireX [email] => email @ gmail.com)) – TheRealSpector

+0

請注意,我的答案已更新 - 起初我錯了一行。 – gibberish

回答

1

$_SESSION['user']是一個關聯數組,包含從數據庫中檢索到的用戶的各種屬性。 ID號是該陣列的id元素,所以你需要做的:

echo("Hello {$_SESSION['user']['username']} (ID = {$_SESSION['user']['id']})"); 

if ($_SESSION['user']['id']==1) { 
    echo "You have admin access"; 
} else { 
    echo "You're a regular user"; 
} 
+0

這可能是迄今爲止最好的答案,但我改變了我在數據庫中的訪問級別,它只是停留在「您有管理員權限」http://puu.sh/mDC7s/d32ad7c8da.png – TheRealSpector

+0

此代碼正在檢查ID,而不是訪問級別。 – Barmar

0

在您需要添加

session_start(); 

看到這裏所有的信息頁面的頂部: http://php.net/manual/en/function.session-start.php

作爲@Barmar答案顯示這是其它丟失片$ _SESSION [「用戶」] [「ID」]

+0

嗯...我加了它並得到了相同的結果 – TheRealSpector

+0

你需要這一點的代碼才能工作。 $ _SESSION ['user']看起來是DB中的一行。你能否迴應並提供詳細信息?行或會話。 – nerdlyist