Du bör ha en tabell som innehåller följande kolumner:
id (unik, primär), användarnamn, lösenord, roll (INT, skulle tilldelas 1-3 för rektor, personal eller motsvarande beroende på användaren)
Dessutom
Du kan ha en annan tabell som heter roller om du vill ställa in så här:
id (unik, primär), titel (alternativ för titel skulle vara rektor, personal eller corres)
När användaren loggar in gör bara något liknande
if($role == 1){
// redirect to principal page
}
elseif($role == 2){
// redirect to staff page
}
elseif($role == 3){
// redirect to corres page
}
Jag är inte säker men jag tror att detta skulle fungera också. Testa den här frågan.
(SELECT '1' AS role FROM table1 WHERE username = $username AND password = $password)
UNION ALL
(SELECT '2' AS role FROM table2 WHERE username = $username AND password = $password)
UNION ALL
(SELECT '3' AS role FROM table3 WHERE username = $username AND password = $password)
Förutsatt att användaren bara finns i EN av dessa tre tabeller så bör den matcha användarnamnet och lösenordet och ta reda på vilken tabell användaren kommer ifrån. Sedan kan du dra ut rollen genom att använda
$role = $row['role'];
Om kombinationen av användarnamn/lösenord är felaktig är $role tom eller så kan du hämta antalet rader [med $iscorrectuser =mysql_num_rows($query)] där det finns en matchning och antalet rader skulle vara 0. Du kan då omdirigera användaren som försöker logga in med ett felmeddelande om misslyckad inloggning.