PHP Alternativen zu include() fürs Links in einem CMS

Gohst

Commander
Registriert
Nov. 2005
Beiträge
2.648
Hi community

Ich möchte ein eigenes CMS schreiben (ist nicht mein erstes).
Dazu möchte ich, das Seiten etc. nicht durch eine Variable an der URL des Linkes und dann über ein include() geladen werden.

Sondern Etwa so wie bei CB

http://www.seiteXYZ.de/artikel/artikel1

Wie bringe ich der Seite bei, dass jetzt innerhalb der Website dieses File geladen werden soll, aber das Grundgerüst dableibt?


Klar dass das mit Include super ging.

Aber wie machts CB & co?
Sind da alle Artikel-Seiten immer komplett mit dem ganzen Menü und dem ganzen Kram?

Ich weiss sorry für die dumme Frage.
 
@Gohst:
Normalerweise wird bei einem größeren CMS nicht mit includes gearbeitet, weil die Daten dann meist eh in einer Datenbank liegen...
 
Sie dir bitte bewußt, dass die Kombination include() und $_GET aus Sicherheitsgründen nicht umbedingt die beste Kombination darstellen :-/ Stichwort: Potentielles Cross Site Scripting.
 
Wow so fixe UND gute Antworten.

Vielen Dank!
Aber ich habe mir eben schon Sicherheitsgedanken gemacht.

Ein riesen CMS wirds nicht, aber wenns noch andere gute Wege gibt immer nur her damit :)

Wegen dem Cross-Site Scripting: ich habe das so in ner Art "Blog" abgesichert, weil ich dort 1. ein Berechtigungssystem hatte und 2. IMMER geprüft habe dass nur sowieso berechtigte User die Seite schlussendlich sehen.... (ok vielleicht nicht sehr intelligent, aber BTW).
 
Zuletzt bearbeitet:
bei ordentlichen systemen hat man da zwischendrin noch paar mehr layer...

da gibts meisstens ein "plugin"-system, das heißt, es werden aus einem bestimmten verzeichnis dateien eingelesen und "plugins" registriert (alternativ stecken diese "plugins" in ner datenbank), welche dann bei einem bestimmten muster in der REQUEST_URI aktiviert werden und entsprechenden content zurückliefern...
 
Ok, möchte man aber jetzt noch Variablen mit GET übermitteln, kommt man dann mit Modrewrite krumm.

Etwa hier im Forum beim erstellen dieses Beitrags:

Code:
https://www.computerbase.de/forum/newreply.php?do=newreply&noquote=1&p=XXXXXX

Dann wird hier einfach kein Modrewrite-Regel gebraucht oder wie?
Also kann man also mal von Mod-Rewrite gebrauch machen und einmal nicht?

Einfach so wies halt grad passt?
 
Hier im Forum ist's ja relativ egal wie die URL aussieht - könnte man aber natürlich auch umwandeln.

"Extern", also für dich sichtbar sind die Parameter (ggf.) nicht, "intern" für den Server aber schon.


Du musst dem Server eben via ModRewrite sagen, dass die URL adresse.de/news/ zu adresse.de/?bereich=news umgeleitet werden soll.
 
Zuletzt bearbeitet:
Jaja, wies geht habe ich soweit gesehen.

Aber wenn ich eben per GET übermittle, müsste ich für jeden möglichen Fall einen Eintrag in die .htaccess machen!

Oder lässts man dann einfach sein, und in diesem Fall wird die Adresse dann halt nicht umgewandelt? (ich bin überzeugt dass es so ist, daher Sorry wenn die Frage doof ist).
 
Kommt drauf an, was du genau vorhast.

Du kannst natürlich allgemein formulieren, dass eine URL der Art adresse.de/abc auf adresse.de/?xyz=abc verweisen soll; du brauchst nicht für bspw. bereich=news und bereich=artikel zwei Einträge in der htaccess.
 
Wenn ich das richtig verstehe geht es um die Frage, ob eine Kombinierte Möglichkeit gibt. Das heißt das sich...

adresse.de/news/?kommentar=hallo
... zu ...
adresse.de/index.php?url=news&kommentar=hallo

wandelt. Soweit ich mich auskenne, geht das. Ich bin selbst leider nicht so geübt in der Syntax von ModRewrite, aber hier ist vielleicht alles, was du brauchst:
forum.de.selfhtml.org/archiv/2007/3/t147830/ (letzter Kommentar dort)

Bessere Quelle, aber in Englisch:
httpd.apache.org/docs/2.2/rewrite/rewrite_flags.html (siehe QSA|qsappend weiter unten)

Ich glaube es reicht am Zeilenende der "RewriteRule" die Angabe "[QSA]".

...

Wegen der Alternative zu "include" bin ich aber verwirrt. Der Befehl ansich hat doch nichts schlechtes ansich. Nur der Parameter kann gefährlich sein. Und gerade dieser sollte nie im direkten Sinne aus einer GET oder POST Variable entstehen, sondern bspw. nur in Folge einer erfolgreichen Suche in der DB als ein Rückwert des Ergebnisses. Oder nicht mal das, denn wenn es nur ein Design gibt, bedarf es nicht mal einen variablen include-Aufruf a'la "include 'page/'.$xyz.''.php'".

Ich selbst bastel seit ein 3/4 Jahr an meinem zweiten CMS. Dort suche ich in einer "Menu"-Tabelle (ggf. mehreren Ebenen tief) nach vorhandenen Menupunkten. Als Ergebnis bekomme ich eine ID zum Content und ein Name des Designs für diesen Content. Dieses Designname steht dann für eine passende "designname.php", die sich nur um die HTML-Darstellung des Contents kümmert. Einziger Angriffspunkt ist also die URL in Form von SQL-Injection. Dies lässt sich aber (meines bescheidenen Erachtens nach) durch eine Art Whitelist an erlaubten Zeichen (A-Z, 0-9 und / ) kontrollieren.

Gut, ich gebe zu, das ist alles nicht leicht kompakt zu erzählen. Aber vielleicht ist zumindestens ein Gedankenansatz.
 
Zuletzt bearbeitet:
Zurück
Oben