Měli byste mít jednu tabulku obsahující následující sloupce:
id (unikátní, primární), uživatelské jméno, heslo, role (INT, bude přiřazeno 1-3 pro hlavní, personál nebo kore v závislosti na uživateli)
Dodatečně
Můžete mít další tabulku s názvem role, pokud chcete nastavit takto:
id (unikátní, primární), název (možnosti pro název by byly hlavní, zaměstnanci nebo korres)
Když se uživatel přihlásí, udělejte něco jako
if($role == 1){
// redirect to principal page
}
elseif($role == 2){
// redirect to staff page
}
elseif($role == 3){
// redirect to corres page
}
Nejsem si jistý, ale věřím, že by to fungovalo také. Zkuste tento dotaz.
(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)
Za předpokladu, že se uživatel nachází pouze v JEDNÉ z těchto tří tabulek, by se mělo shodovat s uživatelským jménem a heslem a zjistit, ze které tabulky uživatel přichází. Poté můžete roli vytáhnout pomocí
$role = $row['role'];
Pokud je kombinace uživatelského jména a hesla nesprávná, $role by byla prázdná nebo byste mohli načíst počet řádků [pomocí $iscorrectuser =mysql_num_rows($query)], kde existuje shoda a počet řádků by byl 0. Poté přesměrovat uživatele, který se pokouší přihlásit, s chybovou zprávou „Neúspěšné přihlášení“.