• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Menupunkte nur im eingeloggten Modus sichtbar

Werbung:
Render die Navigation per PHP, und je nach Zustand der Session werden entweder alle oder nur die beiden letzten Menüpunkte angezeigt.
 
Würde das mit if Abfragen auch funktionieren, so wie ich das gemacht hätte?

Danke
 
Werbung:
Du könntest zwei unterschiedliche Menüs in einzelnen Dateien speichern und diese per include auf deiner Seite rendern. Also, falls der obige Code überprüft, ob der User eingelogt ist, etwa so:

PHP:
$navigation = (int)$username['level']!==1) ? dateipfad/full_nav.php : dateipfad/short_nav.php
echo $navigation;
 
Folgenden Script in einer einzelnen Datei legen also einmal full_nav und short_nav, und statt meine Menubar dein Script ersetzen?

PHP:
<?php
$navigation = (int)$username['level']!==1) ? dateipfad/full_nav.php : dateipfad/short_nav.php
echo $navigation;
?>
 
Zuletzt bearbeitet von einem Moderator:
Das war nur ein möglicher Ansatz, und du brauchst hier nicht deinen kompletten Code zu posten. :)

Eine if-else-Abfrage:
PHP:
if(isset($_SESSION['user']))  {
  $menu = "full_nav.php";
} else {
  $menu = "short_nav.php";
}
lässt sich mittels des ternären Operators auch kürzer schreiben:
PHP:
$menu = isset($_SESSION['user']) ? "full_nav.php" : "short_nav.php";

Wie Sessions funktionieren findest du hier:
http://www.php.net/manual/en/intro.session.php

Eine andere Möglichkeit wäre, die Navigation direkt im if-else zu rendern.
 
Werbung:
Mit if-else es zu rendern, wäre glaub ich einfacher oder, dann wäre das nicht in mehreren Dateien sondern alle in der header.html oder müsste ich beim rendern die Menubar auch in 2 Dateien stecken?
 
Kannst du halten, wie du willst. Solltest du irgendwann einmal tiefer in die Materie einsteigen und mit MVC-Frameworks Bekanntschaft schließen, wirst du sehen, dass Websites aus vielen einzelnen Dateien bestehen, die HTML-Struktur, Funktionalität, Inhalt und Styling strikt voneinander trennen. Ansonsten wird es irgendwann unübersichtlich und schwerer zu warten.

Auch wenn dein gegenwärtiges Projekt nur aus einer einzigen Seite besteht, wäre der nächste logische Schritt die Mehrsprachigkeit, und spätestens dann müsstest du dynamisieren und den Textinhalt über Keys rendern.
 
Ja stimmt, wie würde das funktionieren mit if-else zu rendern an meiner Menubar? Oder wäre die Möglichkeit mit einer if-else-Abfrage doch besser, eigendlich wäre es egal.. was würdest du machen?
 
Werbung:
Moin, also um die 3 Untermeüpunkte rauszuhaben ist eine zweite Datei zu erstellen etwas zu groß. Das ist so als würde man mit Kanonen auf Spatzen schießen.
Du müsstest einfach um die 3 ersten <li> tags eine if drum rum machen. Wenn nicht angemeldet dann zeige die 3 Menüs an, wenn angemeldet fängt es bei FAQ an.
 
Ja genau, so hab ich mir das auch vorgestellt wie müsste dir if Abfrage bei mir aussehen, das die if Abfrage weiß ob der Benutzer eingeloggt ist oder nicht?
 
LASS DIR NICHT IMMER ALLES VORKAUEN!!!
Zeige uns, was du ernsthaft versucht hast! Wenn du schon an einem if scheiterst, solltest du eine eigene Homepage mit PHP ganz schnell vergessen!!!
 
Werbung:
Was ist so schwer daran?

HTML:
<ul>
<?php if ($condition): ?>
  // Menüpunkt 1
  .....
<$php endif ?>
  // Menüpunkt 4
  .....
</ul>
 
Hallo,

ich habe es so gemacht mit Sessions, habs aber nur noch nicht eingebaut weil sonst erhalte ich irgendwie eine weiße leere Seite:

HTML:
                            <?php if((intval($_SESSION['logged_in'])!== 1){ ?><li><a href="/login.html" class="login">Login</a></li>
                            <li><a href="/register.html" class="registrieren">Registrieren</a></li>
                            <li><a href="/forgot_password.html" class="passwort">Passwort</a></li><?php } ?>
 
Tja, dann machste wohl was falsch.

Häufig hilft:
Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Werbung:
So auf den ersten Blick würde ich sagen, du hast ne Klammer zu viel. Und wie du deine If aufbauen sollst, dann kannst nur du uns sagen. Wir wissen ja nicht wie deine Session im eingeloggten Zustand aussieht.
 
Hat die Fehleranzeige wohl wieder ausgemacht, dann erscheint nu eine weiße Seite :D
Langsam bekomme ich das Gefühl als wenn man gegen eine Wand redet.

@tobi1994
Was ich dir noch empfehlen könnte wäre DEBUG Funktionen zu schreiben, wenn man sich mal hinsetzt und bisschen gedanken macht bekommt man einige schöne Funktionen hin. Dann brauchst du diese nur zu includieren und scon hat man alles was man für die programmierung braucht :D
 
Werbung:
Zurück
Oben