Am bequemsten wäre vermutlich in die start.php
einzutragen.
Die links wären dann
Ist zwar technisch nicht die sicherste Methode, für den Anfang dürfts aber eine der einfachsten sein.
Am bequemsten wäre vermutlich in die start.php
einzutragen.
Die links wären dann
Ist zwar technisch nicht die sicherste Methode, für den Anfang dürfts aber eine der einfachsten sein.
--Meine Blogs:
LimeArts Webdesign - Internet &Technologie
Hopeless - Rollenspiele News & Reviews « Großes Sommer-Gewinnspiel!
Diablo 3 News & Community
Jetzt habe ich nur noch das Problem, dass beim ersten Aufruf der start.php die Startseite nicht angezeigt wird. Bzw. der erste richtige Inhalt.
EDIT: funktioniert jetzt doch alles einwandfrei!
Vielen lieben Dank!
--
Grundsätzlich wäre es sinnvoll, das ganze noch zu erweitern und mit is_file() zu prüfen, ob die Datei existiert (im Ja-Fall die Datei einbinden, im Nein-Fall einen 404 zurückliefern).
Ungeachtet deines Edits: Wenn du genau im Überblick hast, welche Unterseiten du einbinden willst, kannst du auch mit einem Switch arbeiten und da dann als default Case die Willkommensseite includen.Zitat
Sinnvollerweise übergibt man die Dateierweiterung nicht über die Adresszeile, weil das ein Sicherheitsproblem darstellt.
Außerdem verstehe ich nicht, warum man diese Konstruktion so oft vorfindet:
Völlig sinnlos.
--
Die Wespe, der Fuchs und der Vogel gehen erst in die Oper und dann auf Safari. 8)
Nützliche Adressen (HTML, CSS, PHP, MySQL, Werkzeuge) für Webgestalter.
-> Übersicht meiner Artikel (HTML Strict verstehen Teil 1-8 und weitere interessante Themen).
Das hat schon seinen Sinn, zumindest wenn der Wert möglicherweise nachträglich verändert wird. Imo ist es nämlich schlechter Stil, die superglobalen Variablen zu verändern - wenn man die Daten verändern muss, macht man das mit einer Kopie. Und ansonsten spart man sich so Schreibarbeit und es sieht schöner aus :P
--
Zur Weiterverarbeitung mag das ja nützlich sein. Ich würde einer Variable allerdings sofort die verarbeitete Version zuweisen. Außerdem meine ich, dadurch den Ursprung der Information besser nachvollziehen zu können.Zitat
Schreibarbeit? Tasten richtig belegen!
Ob es schöner aussieht ist wohl eher Geschmackssache. $page erinnert zu sehr an die register_globals-Zeit und damit schlechtem Stil. $_GET hebt sich davon majestätisch ab![]()
Mal ehrlich: Wenn man schön gecodet hat, kann man eine globale Variable sowieso nur einmal verwenden: Und zwar, wenn man sie per Value an einen einen Konstruktor übergibt.
Wenn es dann nicht mindestens eine selbst geschriebene Funktion ist, hat man bereits etwas falsch designed.
Somit ist es eigentlich nur Haarspalterrei, welcher Stil stilloser ist.
Ich persönlich halte es ja am angenehmsten, die Seiten in eine Tabelle in der Datenbank einzutragen und über die ID zu arbeiten: So kann man auch alles viel einfacher managen, und sortieren. Statistiken sind auch leichter zu erstellen, usw.
Geändert von Mog (30.05.2007 um 15:49 Uhr)
Was hat der geschriebene Unterscheid zwischen $page und $_GET['page'] mit dem allgemeinen Programmierungs„stil“ zu tun?Zitat
Wenn man, wie du gesagt hast, den Wert übergibt. Eine eigene Funktion bringt aber auch hier nichts, wenn man die globale Variable direkt verwendet, was bei den Superglobalen ja möglich ist.Zitat
Ich hoffe, dass das nicht bedeutet, dass du deinen Besuchern Nummern an den Kopf wirfst.Zitat
Es geht doch darum, das diese Diskussion auf einen allgemeinen schlechten Programmierstil zurück geht. Wenn man es elegant macht, dann sind alle funktionalitäten in Modulen untergebracht und man greift nur auf sie zu, wenn sie übergeben wurden. Ganz egal, ob sie superblobal sind, oder was auch immer. Da gibt es Designregeln.
Somit ist eine Kopie per Value sowieso /immer/ dabei, da man die superglobale Variable niemals ändert. Theoretisch kann man sie ja auch per Referenz übergeben, aber das ist nur sinnvoll, wenn es um große Arrays geht: Ob du den zahlenwert, oder die Adresse kopierst, ist egal. Nur dauert die Referenzmagie in PHP ewig, da wir den recht natürlichen Mechanismus auf höhere Ebene nachgebaut in Verwendung haben. Somit ist eine Übergabe per Value sinnvoller als Referenz.
Dh. hat man in seinem Modul immer eine Kopie mit einem anderen Namen:
function foo ( $IchBinEineGlobaleVariable ) { }
Somit arbeitet man im Modul sowieso mit einem anderen Namen. Wenn man es noch eleganter macht, ist die Seite ein riesiges Objekt. Somit hat sich die ganze Geschichte sowieso erledigt.
Das ist klar, aber man kann nicht erwarten, dass jemand von der $page = $_GET['page']-Schreibweise auf eine modulare Anwendungsbasis wechselt. Gerade weil ersteres schon ein Schritt in eine ganz andere Richtung ist.Zitat
Dass Designregeln wichtig sind, musst du mir bestimmt nicht sagen. Es get mir nur mehr darum, dass ich bei der fraglichen Codezeile nicht denke: „Warum wird die Funktionalität nicht in einer Funktion / einem Objekt durchgeführt?“ sondern grunsätzlich mal „Warum so umständlich?“
Letztendlich sehe ich darin auch den Weg zu besserem Stil. Designregeln und Standards haben keinen Sinn, wenn sie nicht verstanden werden.
Volle Zustimmung.Zitat
Ja, hab ich leider versäumt >.<Zitat von Mog
Nein, meine auch den direkten Sprung zur besseren Variante.Zitat
Bitte nicht, da könnte man ja _alles_ includen (also der User per Manipulation).
Besser wäre imho: include('./pages/'. stripsplashes($page).'.php');
So können nur php Seiten innerhalb des Unterverzeichnisses 'pages' aufgerufen werden. Bei den Links muss man nun halt die Endung weglassen. Also: <a href="?page=home">My Home</a> <!-- führt zu ./pages/home.php -->
Auch sachen wie <a href="?page=../../index">My Home</a> gehen nicht mit meiner Methode (dank stripsplashes).
Zusätzlich würde ich eine überprüfung auf vorhandensein einbauen:
Damit der User nicht eventuelle PHP Fehler sehen muss.![]()
--Signature.