Senin söylediğin mantığı 2 sene önce counter-strike 1.6'nın server yönetim panelinde incelemiştim.
Uzun uğraşlar sonucu en kolay ve sunucuyu yormadan nasıl yapacağını çözmüştüm.
Şu şekilde;

Kullanıcının yetkileri

$Kullanici_yetki = "1234567890"; // bu rakamlar sıraysıyla birer yetki örneğin; 1 rakamı bu dizede mevcutsa yazı düzenleyebilir gibi..
?>

Örneğin anasayfadan ürün kontrol sayfasına gitmek isteyen bir kullanıcı

$Kullanici_yetki = "1234567890";
if (strstr($Kullanici_yetki, "1")) // burada kullanıcının rakam dizisi içerisinde 1 rakamını aradık eğer varsa
{
echo "Urun yönetim sayfasına yönlendiriliyorsunuz.";
header("Refresh: 3; url=urunyonetim.php"); // Bu sayfaya yönlenecek
} else {
echo "Bu sayfaya giriş izniniz yok.";
header("Refresh: 3; url=izinsizgiris.php"); // Yoksa buraya.
}

?>

Koruma olarak bunu urunyonetim.php sayfasının içine gömüp session olarak kullanıcı yetki dizesini if ile sayfa başında sorgulayıp direkt erişimide engelleyebilirsiniz.