Verschachtelung

lisali

Erfahrenes Mitglied
Hallo,

ich habe folgenden Code:

PHP:
if (isset($_SESSION['id'])){ include_once "userpanel.php"; }
elseif (empty($_GET['s'])){ include_once "default.php";

echo "Inhalt dadrunter"; 
...

} elseif ($_GET['s']=='disclaimer') { include_once "disclaimer.php"; }

Also, ich möchte erreichen, dass ich den "Inhalt dadrunter" immer anzeigen lasse, wenn man gerade auf der Startseite ist und nicht gerade z.B. auf der Disclaimer-Seite.
Aber er soll auch angezeigt werden, wenn man eingeloggt ist.

Es ist halt so, dass wenn man eingeloggt ist, soll userpanel.php oben eingebunden und angezeigt werden, sonst nur die default.php.

Aber hierbei wird ja, wenn eingeloggt, nur userpanel.php eingebunden und "Inhalt dadrunter" ignoriert.

Was könnt ich da tun?

Ich dachte z.B. daran, dass ich "Inhalt dadrunter" in eine seperate Datei packe und dann nochmal jeweis include... aber das wär irgendwie blöd.
 
Hallo,

es wäre einfacher "Inhalt darunter" in eine extra Datei zu packen. Die würde dann immer includiert, wenn nicht der Disclaimer aufgerufen wird:
PHP:
$inc = 'default.php';
switch ($_GET ['s'])
{
	case 'disclaimer': $inc = 'disclaimer.php'; break;
	default: $inc = 'main.php'; break; // habe die neue Datei "main.php" genannt / passend benennen ;)
}
include_once $inc;

Die Datei "main.php" könnte wie folgt aussehen:
PHP:
if (isset ($_SESSION ['id']))
{
	include_once "userpanel.php";
}
elseif (empty ($_GET ['s']))
{
	include_once "default.php";
}

echo "Inhalt dadrunter"; 
...

Sofern du noch mehr IF/ELSE Bedingungen auf $_GET ['s'] hast, bietet sich dieses Muster wiederum nicht an! Sollte deine Struktur also umfangreicher sein als oben angedeutet, dann melde dich bitte nochmal.


Grüße
BN
 
Nur um das etwas nachzuvollziehen. Du meintest dieses Muster bietet sich nicht an. Welches genau meintest du damit?

Und was meinst du mit "oben angedeutet"? Von mir angedeutet oder von dir im Code?

Tut mir Leid, bin etwas verwirrt...

Danke vielmals.
 
Er meint den Code.
Das geht übrigens in die Richtung die ich auch meinte....
Und noch dazu ist es etwas sauberer.
Allerdings würde ich euch beiden mal lesbarere Formatierung empfehlen :D
 
ups :-) mit oben angedeutet meine ich dein Posting, genau.

Mein Vorschlag eignet sich dann nicht, wenn du mehr als 2 Seiten über if/else abfragst.

Typischer Weise hat eine Seite mehr als 2 Seiten. Start, Sitemap, Kontakt, Produkte, dies und das und so weiter
Wenn du von Seite zu Seite diesen oder jenen Inhalt einbinden möchtest, bietet es sich an, aufrufbare Sites ($_GET ['s']) im Dateisystem in extra Dateien abzulegen.

angedeutet:
PHP:
$inc = 'start.php';
switch ($_GET ['s'])
{
	case 'sitemap': $inc = 'sitemap.php'; break;
	case 'kontakt': $inc = 'kontakt.php'; break;
	case 'produkte': $inc = 'produkte.php'; break;
	case 'start':
	default: $inc = 'start.php'; break;
}

Der Vorteil ist hier, dass du nicht einen großen Scriptklumpen (z.B. in der index.php) hast, sondern eine zur Seite passende Dateistruktur mit kleinen übersichtlichen einzelnen Dateien. Daraus ergeben sich bezüglich der Gestaltung und Logik sehr viele Möglichkeiten und Freiheiten.

Grüße BN
 
Zurück