Na Twoim miejscu przemyślałbym ten warunek, bo to on Ci bruździ

Nie masz tam logicznie określonego kto ma tak naprawdę widzieć ową wiadomość. Bo jak sprawdzisz $row['ranga'] na niezalogowanych?
Lepiej popatrz jak masz ustawione dane tyczące uprawnień i według nich kombinuj. Zapewne są one w sesji schowane i tam w zalezności od ich poziomu uprawnień wstawiaj wyświetlanie (lub nie). Te zmienne to zazwyczaj aliasy na wartości liczbowe (tak się robi najczęściej) o zwiększającej się liczbie:
0 - SUPERADMIN
1 - ADMIN
2 - SUPER MOD
3 - MOD
4 - USER
5 - GUEST
Niektórzy robią większe odstępy by umożliwić sobie wstawianie dodatkowych rang będących wyżej niż USER i wtedy są luki pomiędzy nimi w stylu 0, 1, 5, 10, 100, 101, bo wtedy można ustawiać zalogowanym userom dodatkowe uprawnienia, czy tworzyć grupy userow z konkretnymi uprawnieniami. Tak czy inaczej jeśli $_SESSION['ranga'] < GUEST to wyświetla to co jest w [hide], a gdy $_SESSION['ranga'] < USER ( lub, gdy mamy coś pomiędzy user a mod, $_SESSION['ranga'] <= MOD ) powinna wyświetlać dodatkowo to, co jest w tagach [mod]

Ale wszystko oczywiście zależy od tego jak jest rozwiązany system uprawnień. I to do niego musisz się dopasować. Rozwiązań w zależności od tego systemu może być wiele i musisz go poznać by moc stworzyć prawidłowe instrukcje sterujące.