PHP Wie realisiert man üblicherweise die Weiterleitung auf andere Unterseiten?

Jack159

Lieutenant
Registriert
Dez. 2011
Beiträge
766
Hallo,

ich habe die Grundlagen von PHP durchgearbeitet. Was mir aber noch nicht klar ist und auch in keinem Tutorial angesprochen wird ist, wie man die Weiterleitung auf andere Unterseiten umsetzt.

Damit meine ich folgendes:
Als Beispiel sei eine Seite mit einem Benutzersystem gegeben. Man loggt sich nun ein und klickt dann z.B. auf "Mein Profil".
Wie wird dann die Weiterleitung auf die "Mein Profil" Seite realisiert?

Das direkteste was mir einfällt wäre einfach meinProfil.php aufzurufen...Aber dann müsste ja in jeder Unterseite erstmal geprüft werden, ob man überhaupt eingeloggt ist und dann auch bei jeder Unterseite das Template includen....Meine Idee erscheint mir daher ziemlich falsch.

Wie setzt man sowas normalerweise um? Und hat das ganze auch einen speziellen Namen?
 
Also ich arbeite mit include()

Heißt ich mach ne header.php und ne footer.php. im header hab ich den kopf der seite mit logo, css verlinkung etc und mein loginscript.
dann hab ich ne index.php wo ich oben include('header.php') und das gleiche unten mit footer. dazwischen hab ich mein login form. wenn ich dann auf andere seiten verlinke wie profil.php, dann steht da auch wieder include('header.php') und das gleiche mit footer und dazwischen halt alles über mein profil.
 
du überprüfst beim auruf JEDER seite, ob der user eingeloggt ist.
du kannst z..b cookoes seitzen und / oder sessions nutzen.
ich rufe meine seiten immer nach dem motto: index.php?modul=profil auf.
sprich die index wird geladen, überprüft und ob der user eingeloggt ist. wenn nicht bekommt er nen login und ansonsten die gewünschte seite mit include's (header, nav und footer kommen logischer weise noch dazu)
 
Jack159 schrieb:
...ich habe die Grundlagen von PHP durchgearbeitet.

Das ist nun nicht böse gemeint, aber dann hast du entweder die Hälfte ausgelassen oder nicht richtig gelesen.
Includes und solche Geschichten, ebenso wie das Handling von GET und POST gehört eigentlich zu eben diesen Grundlagen...
 
Mojo1987 schrieb:
Das ist nun nicht böse gemeint, aber dann hast du entweder die Hälfte ausgelassen oder nicht richtig gelesen.
Includes und solche Geschichten, ebenso wie das Handling von GET und POST gehört eigentlich zu eben diesen Grundlagen...

Include, POST und GET sind mir natürlich bekannt, aber ich hätte jetzt nicht gedacht, dass ich mit meiner Idee aus meinem Startpost schon fast richtig lag ;)

Das ist also wirklich das übliche vorgehen in PHP und man kann es sich ruhig so einprägen?
 
Am besten bist du damit beraten, dir ein paar Implementierungen relevanter CMS anzusehen. Dann kannst du es immer noch besser machen, wenn du deren Ideen doof findest.
 
Denke auch. Such dir eins der wirklich gut geschriebenen quelloffenen Systeme und orientiere dich daran. Contao ist sehr sauberer Code, Magento komplex aber verständlich, Joomla sieht auch noch hübsch aus. Wordpress ist Codesuppe Deluxe und nur ein Beispiel für "Wie man es NICHT macht"

Aber kurz und knapp:
- include() bzw. require() gehört zu jedem Projekt, das größer als ein einzelnes Dokument ist.
- Befasse dich früh mit den "magischen" Get- und Set-Methoden. Spart enorm viel Code.
- Schreib saubere Objektorientierung. Fang gar nicht erst prozedural an, das hängt dir sonst ewig an.
- Für komplexere Anforderungen schreibt man sich a) eine vernünftige Ordnerstruktur (Module, Bibliotheken, Modelle,... in vorhersagbaren Ordnern) und b) einen dazu passenden Autoloader. Soll sich selbiger doch um die Includes kümmern.
Mal ein Beispiel: Irgendwo, z.B. in /system/modules/navigation/ModuleNavigation.php ist die Klasse ModuleNavigation extends Module definiert. Ich benötige jetzt, mit einem Autoloader, nirgendwo ein explizites include("/system/modules/navigation/ModuleNavigation.php"), sondern ich sag nur an passender Stelle $foo = new ModuleNavigation(); $foo->Template = "/system/modules/navigation/templates/navTemplate.tpl"; echo $foo->parse();
- Mit ner separaten PHP-Datei pro Unterseite brauchst du auch nicht erst anfangen (also nix mit kontakt.php). Das mag leichter aussehen, beißt dir aber in den Arsch wenn du mal ein winziges Stück erweitern willst. Verwende von Anfang an gleich eine clevere Router-Implementierung und lass alles über die index.php und deren GET-Parameter laufen.
- Weiterleitungen (im Sinne von: wenn Status erfüllt -> wechsle zu URL) laufen immer über header(). Das heißt wiederum, du musst mit Output Buffern arbeiten, da du vor dem Header nix ausgeben darfst.
- Schreib dir ne bequeme Klasse, die den Login-Status des Users überprüft. Je nach Struktur könntest du dann z.B. an den passenden Stellen sagen: if($this->User->isLoggedIn()){}
 
Zurück
Oben