2014-02-19 86 views
0

我正在爲我的projectteam在學校寫一個小時註冊系統。一切都非常有效,但我似乎無法獲得用戶權限的驗證工作。驗證用戶的權利

驗證在用戶表中的acctype字段中完成。如果爲0(guest),則只能查看小時數列表,如果1(專家)可以添加自己的小時數,並且如果使用2(項目經理),則可以查看用戶提交的小時數。

起初,我只是使用$賬戶查詢,而不是選擇他們,我只選擇了acctype。

有沒有人有任何想法我做錯了什麼?

$cookie = $_COOKIE['user']; 
$account = mysqli_query($conn, "SELECT * FROM user WHERE user = '" . $cookie . "'"); 
$acctype = mysqli_fetch_assoc($account->acctype); 

if(isset($cookie) && $acctype >= 1) { 

} else { 

} 

喬納森

+0

唐不會將用戶的名稱存儲在cookie中。您應該將用戶信息存儲在服務器會話中:http://www.php.net/manual/en/book.session.php – snollygolly

+0

查看cookie用戶的數據很可惜:P –

回答

1

我相信有錯在這裏的幾件事情:

  • 你如果它被設置檢查之前讀的cookie。這是一個錯誤。你應該看看是否有cookie,然後閱讀它。你也不需要爲它分配一個單獨的變量。

注意:正如我在評論中所說的,用戶數據應該在會話中,而不是cookie。

  • 我不知道你的數據庫架構看起來像什麼,但你的查詢是SELECT * FROM user,也就是說,如果你有一個ID,用戶名,訪問級別,和其他一些東西,你要把所有的東西寫入var $acctype,這顯然不是一個整數。

我認爲解決辦法是執行查詢,讓您的結果,然後比較行(S)回來了,只檢查acctype部分:

if ($row['acctype'] >= 1){ 

} 

文檔:http://us1.php.net/mysqli_fetch_assoc

+0

如果這對您有所幫助,請確保接受它。謝謝! – snollygolly

+0

感謝您的幫助,它將在未來的問題中幫助我很多:-)壞消息是,修復它花費了很長時間,因此項目內項目被取消,我們將繼續使用舊式文件! :-((好吧,我會花一些空閒時間,下次使用它:)) –