Bör också nämnas att
if (!isset($_SESSION['sess_user']))
är absolut för klent för att kolla en inloggning. Du behöver alltid kolla anvnamn & lösen ifrån din session eller cookie variabel mot databasen/filen där du har användardata, (samt ha lösen och ev annan användardata krypterad).
Jag har gjort så här att min auktoriseringsrutin körs i en funktion (med några underfunktioner) så det enda jag behöver köra på mina script sidor är:
$anvlevel = auktfunk($anvnamn,$losen,$aktivitet) or die(include "login.php");
1) om ovanstående påstående är falskt så hämtas ju login
2) från login postas anvnamn, lösen samt aktivitet (i det här fallet logga in)
I funktionen:
3) Om aktivitet är logga ut, så skriver vi skräp över cookies, nollar session och sätter falskt.
4) Om aktivitet är logga in och anvnamn och lösen skickats med funktionen betraktas detta som en ny login, oavsett tidigare status.
5) Uppgifterna kollas mot databas som sätter en användarnivå. (eller sätter falskt)
6) Om aktivitet är ingen eller annan än logga in/logga ut så kollas om session eller cookie finns. (beroende på konfiguration)
7) Om användaruppgifter finns i session eller cookie så kollas detta mot databas som sätter en användarnivå. (eller sätter falskt)
8) En roundup check med lite extra säkerhetsrutiner körs (t ex referer, antal försök och lite annan överkurs) om vi stöter på problem här så sätter vi falskt och rensar ev data som i punkt 3 ovan, alternativt erbjuder att skicka lösen till mail eller i vissa fall skriver en ban i databasen, osv..
9) Vi returnerar resultatet (falskt eller en användarnivå)
Jag vet inte om du tycker det verkar vara komplicerat men i praktiken är hela paketet ganska slimt, säg 30 rader, och när man väl fått huvudet runt den här sortens upplägg är det grymt skönt att kunna luta sig mot och lätt att felsöka. En annan poäng är att det är lätt att haka på specialarfunktioner som hänger ihop med användare och deras roller.
Och användarnivåvariabeln du får ut använder du naturligtvis till att filtera innehållet. Osv.