Ja,jein, so halb x)
if überprüft etwas, wenn es als 'richtig' bzw 'zutreffend', also true, ausgewertet wird, wird der nachfolgende Teil ausgeführt, nähere Erklärungen gibt es auch immer unter php.net. Speziell für die if Sache hier :
http://de.php.net/manual/de/language.control-structures.php (Noch ein wenig mehr,da if zu den Kontrollstrukturen gehört).
Mein Code macht foglendes (in Worte 'umschrieben'):
if($row['beta']!=1)output("`^$row[level]`0"); =>Ist bei dem Datensatz, der aus der Datenbank ausgelesen wurde, das Feld 'beta' (ohne Anführungszeichen) ungleich 1? Wenn ja, dann gib das Level aus
else output("`t`iRP Char`i"); =>Wenn die if Bedingung false ausgibt, also es nicht zutreffend ist, dann gib RP Char aus
Wie gesagt: Einfach mal bei php.net das durchlesen, es wird dir immer über den Weg laufen.
Aber was funktioniert genau nicht? Was macht er bzw. was macht er nicht?
Deine Idee mit der Beschränkung stimmt auch, allerdings musst du das Feld beta abfragen. In LoGD werden die Daten eines Users in einem Array ausgelesen und sind so im Skript verfügbar. Das Array heißt $session['user']['xyz'], wobei xyz das entsprechende Feld in der accountstabelle im Datensatz des jeweilgen Users ist.
Wie in meinem Post zuvor erwähnt, erfolgt die Kennzeichnung standardmäßig (wenn du daran nichts geändert hast) über das Feld 'beta'. Nun musst du eben Abfragen:
if($session['user']['beta']==1) addnav('Jägerhütte','rplodge.php');
Häufiger Fehler ist:
Ein Gleichheitszeichen weißt einen Wert zu, zwei Gleichheitszeichen vergleichen. Wenn du nun nur ein = geschrieben hättest, würde jeder User, der auf die Seite kommt, wo dieser Link angebracht ist, zum RP CHar werden. Daher entweder immer genau darauf achten oder lieber Sachen wie != (Ungleich) verwenden.
Es könnte sein, dass es an deiner PHP Version liegt. Wenn du PHP 5 benutzt muss da eine Änderung gemacht werde, wenn ich mich recht entsinne, die auch bei der normalen lodge zu tun ist. Die rplodge basiert auf der normalen lodge.