我的程序有3種用戶類型。員工,人力資源和供應商。每當員工登錄時,他/她只能訪問員工可用的頁面。是否可以在會話中進行會話?
if($usr->userLogin()) {
echo "Welcome";
if($usr->user_type == "Vendor") {
$_SESSION['vend']='set';
header("Location:Vendor/vendorHome.php");
}
else if($usr->user_type == "HR"){
$_SESSION['hr']='set';
header("Location:HR/hrHome.php");
}
else {
$_SESSION['emp']='set';
header("Location:Employee/home.php");
}
}
else {
echo "Incorrect Username, Password, or User Type. Please Try<a href='index.php'> Again</a>";
在每個頁面的頂部我有這個代碼是不同的基礎上,如果它的三種類型之一。
?php
session_start();
if(!isset($_SESSION['vend'])) #If session is not set, user isn't logged in.
#Redirect to Login Page
{
header("Location:../index.php");
}
?>
在寫這個應用程序,直到我意識到,如果我的另一用戶添加到任何類型的,第二用戶能夠訪問來自數據庫的第一頁的用戶,信息和一切,這不是一個問題。有什麼方法可以根據用戶聲明第二個會話ID嗎?我將如何根據用戶類型和個人用戶本身限制每個用戶可用的信息?這甚至有可能嗎?我不知道每種類型會有多少用戶,但是我知道會有多個,比如多於5個。
**編輯:**感謝您的建議。我將與他們一起改進我的代碼。我不認爲我正確解釋了我的問題。
可以說我有2個僱員類型'傑克'和'吉爾'。 '傑克'瀏覽了應用程序並添加了一些只有他應該看到或能夠編輯和註銷的表單。當'Jill'登錄時,她不應該看到任何東西。事實並非如此。 'Jill'登錄後,能夠看到並編輯'Jack'的所有內容。 'Jack'和'Jill'都不能訪問與HR或供應商相關的任何內容。會話變量的那部分工作。
您究竟如何存儲任何信息?如果您根據會話中的單個值(例如id)從數據庫中提取數據,則不會看到問題。由於您在設置標題之前打印了某些內容,因此重定向不起作用。 –
您的數據庫不會將信息與用戶標識關聯嗎?你甚至存儲用戶ID嗎?這聽起來像是應用程序中的設計錯誤。 – Bytewave
也許您應該重新考慮您的數據庫結構,您的案例中的用戶類型可以被視爲排名,並且用戶可以有多個排名。你可以在表中引入一個新的列,其中包含一個位標誌值。然後,您可以執行類似'$ usr-> rank&RANK_VENDOR'等操作。 – Xorifelse