#1
| |||
| |||
eigenes CMS: modularer und pflegeleichter AufbauErstmal vorweg: Ich habe vor ein CMS zu programmieren, da mich dieses Thema interessiert und ich ein Projekt wählen musste. Da ich das als Projekt mache, sollte dieses auch von mir programmiert worden sein. Deshalb bitte keine Empfehlungen, bestehende CMS zu nutzen hier posten Das Projekt ist für mich sehr interessant, aber auch eine schwere Aufgabe. Ich muss mich in einige Bereiche einarbeiten. Das Ganze soll mit PHP und MySQL realisiert werden. Natürlich kommt dazu auch noch Javascript (AJAX), CSS und HTML (Templates). Also ein umfangreiches und mit Sicherheit auch lehrreiches Projekt. Jedenfalls sollte ich in diesen Bereichen danach wohl doch einiges an Wissen in den Bereichen besitzen *g* Ich habe mir schonmal Gedanken gemacht und hier die Schwerpunkte meines Projektes: 1.) Rechtesystem Das Rechtesystem soll Gruppenrechte/ -verbote und Userrechte/ -verbote umfassen. Diese der Gruppe bzw dem User gegebene Rechte und Verbote werden mit den benötigten Berechtigungen des jeweiligen Bereichs verglichen. Das ganze soll eine Klasse (eine Datei) werden und als Rückgabe plane ich momentan lediglich false oder true als return. Parameter des Aufrufes sind die Rechte und Verbote des Users und die benötigten Berechtigungen für den Bereich (=> evtl. 8 Parameter(?)) 2.) modularer Aufbau Das gesamte Projekt wird soweit möglich/ sinnvoll in OOP programmiert. Die Klassen sollen einfach ersetzbar sein, so das nur die Übergabeparameter und die Rückgabe übereinstimmen müssen. Dazu soll das ganze auch Module aufnehmen können. 3.) AJAX Die gesamte Seite soll mittels AJAX aktualisierbar sein (nur geänderte Inhalte innerhalb von DIV-Boxen). Sollte der Browser Javascript nicht unterstützen, so soll die Seite "normal" aufgebaut werden. 4.) Trennung von Design von Content (Template-Parser) Ich will einen eigenen Template-Parser mit Cache-Funktion in diesem Projekt einsetzen, damit die Templates so lesbar und einfach (Wartung) wie möglich bleiben können. Templates basieren auf DIV-Boxen, was die Verarbeitung durch Javascript (AJAX) vereinfacht. 5.) Sicherheit Das ganze soll so sicher wie möglich gemacht werden. URL-Parameter sollen vor dem verwenden auf Gültigkeit geprüft werden, nur die index.php soll direkt aufgerufen werden können und die Login-Daten sollen bereits vor dem Senden durch Javascript verschlüsselt (md5) gesendet werden (sofern der Browser Javascript unterstützt, ansonsten herkömmliche Übertragung). 6.) Datenbank Das CMS soll grundsätzlich mal mit MySQL laufen, soll aber bei bedarf auch mit anderen Datenbanken laufen (z.B. SQLite, ... ). Dies werde ich wohl auch selbst versuchen zu realisieren durch eintsprechende Wrapper. Dies mal vorweg. Sollte jemand Tipps oder weitere Ideen haben, so postet diese bitte hier Interessant ist es zwar für einige wohl nicht mehr, aber ich hoffe trotzdem auf eure Beteiligung und Hilfe hier im Forum. Mit freundlichem Gruß Andre |
#2
| ||||
| ||||
Ich erkenne daran nichts besonderes. Anders gesagt: Standard. Daher habe ich auch keine Tipps oder Ideen. Auf Innovationen musst du schon selber kommen. Für eigene Zwecke habe ich auch schon selber ein Content Management System, kurz CMS, entwickelt. Und ich würde es immer wieder tun. Insofern kann ich deinen Drang nach einem eigenen System gut verstehen, auch wenn ich mir sage, dass man nicht immer das Rad neu erfinden sollte . __________________ Frederic Schneider WoltLab Team / WoltLab Wiki / GamePorts / Frederic Schneider / neuer-patriotismus.de |
#3
| |||
| |||
Ja, das stimme ich dir zu. Da ich diesen Drang auch verspüre und das ganze als Projekt auch ernsthaft verfolgt werden muss, hoffe ich auf Erfolg *g* im Prinzip sind ja alle CMS gleich, wenn man es völlig verallgemeinern würde (Templates, DB, modular) In wieweit AJAX bereits verwendet wird, um die angezeigten Inhalte stets aktuell zu halten, ist mir nicht bekannt. AJAX (und Javascript) sind für mich völlig neue Themen, habe da lediglich einige Tests durchgeführt... Ich würde auch gerne eure Anforderungen an ein CMS hören (verweise auf das entsprechende andere Thema könnt ihr sein lassen => ausgedruckt, jedoch noch nicht gelesen ) Die eigentlichen Schwerpunkte liegen auf dem Rechtesystem und der Sicherheit (Login, direkter Dateizugriff, ...) |
#4
| ||||
| ||||
Da wäre wichtig zu wissen, was du dir vorstellst. Wie soll das Rechtemanagement aussehen, welche Optionen soll es geben und was muss geschützt werden. __________________ Frederic Schneider WoltLab Team / WoltLab Wiki / GamePorts / Frederic Schneider / neuer-patriotismus.de |
#5
| |||
| |||
Ok, ich will mit folgenden Möglichkeiten arbeiten: - Gruppenrechte - Userrechte - Gruppenverbote - Userverbote => Rechte oder Verbote die für Gruppen und/ oder einzelne User vergeben werden - Dann die entsprechenden Gegenstücke (Voraussetzungen des Bereichs). Funktion: 1 Verbot für einen Bereich => IMMER verbot! 1 Berechtigung => Erlaubnis, wenn kein Verbot vorliegt - Berechtigungen/ Verbote kann man für Module vergeben (Darf ein User/ eine Gruppe das Modul überhaupt aufrufen?) - Berechtigungen/ Verbote für Aktionen (Darf ein User/ eine Gruppe eine Aktion - eines Moduls - überhaupt ausführen?) => Dadurch kann man einen User zu einem Admin machen, der aber nur gewisse Funktionen ausführen darf. Meiner momentanen Einschätzung nach sollte man so eine recht freie Rechtevergabe erzielen können. Das Rechtesystem soll dann in der Datei rechte.php sein und sobald diese aufgerufen wird, werden die Rechte anhand der übergebenen Parameter geprüft. Ergebnis sollte true oder false sein. |
#6
| ||||
| ||||
Ich wäre froh wenn ich endlich mal ein CMS entdecken mit korrekt umgesetzer MVC Technik, welches mir auch entsprechende Freiheiten erlaubt: Egal ob Typo3 oder Mambo, man kann sich nirgendwo austoben. |
#7
| |||
| |||
MVC-Technik? Unt er diesem Begriff kann ich mir momentan nichts vorstellen. Kannst du das genauer erläutern? |
#8
| |||
| |||
Ich wuerde mir ein CMS wuenschen, das 0. die gaengigen CMS-Features beherrscht 1. sauber OO programmiert ist 2. auf Smarty basiert und den Funktionsumfang voll ausnutzt 3. eine Datenbankabstraktion wie adoDB oder PEAR verwendet 4. modular desined und durch Plugins erweiterbar ist 5. ein Rechtesystem nutzt, das auf Rollen basiert (evtl. zusammengefasst zu Gruppen) 6. die Praesentationsebene beliebige Formate ausgeben kann (HTML, XML, CSV, etc) Zu MVC schau mal hier: http://userpage.fu-berlin.de/~ram/pu...jf47htuHHt/mvc http://de.wikipedia.org/wiki/MVC bzw. http://de.wikipedia.org/wiki/Design_Pattern |
#9
| |||
| |||
@frolix: 0. Sollte so sein 1. Mal sehen ob ich das hinbekomme... 2. Kein Smarty! Kenn ich nicht, mag ich nicht. zu umfangreich 3. Wenn, dann PEAR 4. modular auf jeden Fall, Plugins wahrscheinlich auch 5. "auf Rollen basiert"? Wie du meine? Beschriebung meiner Idee => siehe oben 6. Kann ich mir momentan auch nichts drunter vorstellen Noch kann ich Wünsche versuchen zu berücksichtigen, da ich erst mal ein wenig überlege, wie das werden soll |
#10
| ||||
| ||||
Wg. "auf Rollen basiert" hilft vielleicht das als Einstiegsthema: http://de.wikipedia.org/wiki/Benutzerrolle __________________ Frederic Schneider WoltLab Team / WoltLab Wiki / GamePorts / Frederic Schneider / neuer-patriotismus.de |
#11
| |||
| |||
Templates: layout.tpl box.tpl Das Layout regelt den Aufbau und die Optik der Seite. Die Datei box.tpl enthält eine Box, nach deren Vorbild alle Boxen der Seite aufgebaut werden (kann man auch erweitern um lBox.tpl,mBox.tpl und rBox.tpl). Grundsätzlich will ich alles in DIV-Boxen darstellen, was das ganze vereinfachen sollte. SOmit werden auch nur wenige Templates gebraucht, welche zu verstehen sein sollten. Interessant wäre dann noch der Inhalt der Box (auch HTML => Tabellen usw.), welche evtl wiederum ein Template benötigen, jedoch dann Seitenspezifisch. Wo sollte ich, wenn ich es so machen würde, diese seitenspezifische Templates ablegen? Im jeweiligen Modul-Ordner (Unterordner themes?) oder ebenfalls im "globalen" Themes-Ordner? Was denkt ihr? Wie sollte man das aufbauen, damit es einfach, verständlich und sinnvoll bleibt? |
#12
| |||
| |||
Zitat:
Zitat:
|
#13
| |||
| |||
XML kenne ich momentan nur wenige Beispiele aus dem Internet und Zeitschriften. Hatte eigentlich nicht vor mich damit zu beschäftigen. HTML ist wohl am einfachsten und somit für jeden verständlich, während XML wenigeren nur bekannt ist. Somit werden die Templates wohl in HTML (mit einigen Template-Tags) geschrieben. Ob man eine Anpassung von XML zu html anbieten sollte, ist was anderesn (um xml-Scripte zu importieren). Welchen nutzen hätte ich aus Smarty? Ich habe eine einfache (noch zu überarbeitende) Klasse, welche Variablen jeglicher Form, IF, ELSEIF, ELSE, FOREACH und INCLUDE (auch Verschachtelungen) unterstützt. Dazu noch eine Cachefunktion. Mehr benötigt ein Templatesystem doch gar nicht Ich habe mich vor längerer Zeit bereits schonmal mit Smarty befasst und nichts verstanden (damals hatte ich weniger Ahnung von der Materie), deshalb sollte mein einfaches System Anfängern zugute kommen. Den oben beschriebenen Aufbau einer Seite finde ich zwar nicht optimal, lässt sich aber für mich momentan am einfachsten mit AJAX kombinieren und einige Ideen einfacher umsetzen. Verbesserungsvorschläge nehme ich da auch gerne an. Oder eure Meinung dazu. modularer Aufbau: Soweit möglich wird alles mit einem Modul gelöst (soweit möglich und sinnvoll). Dazu gibt es eine module-Table in der DB, in der die grundlegenden Informationen abgespeichert werden (Modulname, AUfruf, Version, Zugriffsberechtigungen usw.) und mindestens eine weitere Tabelle zum Modul (z.B. news_rechte), in welcher die einzelnen Berechtigungen für die Aktionen des Moduls festgehalten werden. Ansonsten gäbe es eine recht große gemeinsame Tabelle, in der ALLE Rechte zu allen Modulen gespeichert werden, was zu einer extrem großen Tabelle führen würde... |
#14
| |||
| |||
Das Rechtesystem will ich gruppenbasierend machen. Die Rechte, die man den Usern direkt vergeben kann, sollen die Möglichkeiten nur erweitern. Sicherheit: Das ganze könnte ungefähr so aussehen/ ablaufen... 1) Direkter Aufruf nur für index.php erlaubt 2) Prüfen nach Hackversuchen durch die URL 3) Prüfen auf Existenz/ Gültigkeit des gewählten Ziels 4) Prüfen der Berechtigungen 5a) Ok, ausführen 5b) Fehler aufgetreten, Errorseite und Fehlerlog Diese Punkte werden der Reihe nach abgearbeitet. Dadurch sollen nur gültige und zulässige Aktionen ausgeführt werden. Welche (globalen) Variablen muss ich auf diese Art und Weise testen, damit sich da nichts ungültiges einschleichen kann? $_POST, $_GET und $_REQUEST? Gibt es noch weitere? |
#15
| ||||
| ||||
Bezüglich Sicherheit kann ich dir auch dieses "Handbuch" empfehlen: http://phpsec.org/projects/guide/ MfG MaMo __________________ Forensoftware mit integriertem CMS: Viscacha 0.8! |
#16
| |||
| |||
Danke, sehr interessat. Muss ich mir aber in Ruhe durchschauen Ach ja, ich will in php5 programmieren. Nur mal so am Rande... |
#17
| ||||
| ||||
Hi eBoy Lies dir diesen Beitrag zum Rechte-System durch:Ideales Rechte-System So nun zu den anderen Punkten: In meinen Augen is AJAX eine nette Sache, nur bietet es sehr viele Angriffmöglichkeiten, die man ned unterschätzen sollte. Durch diese Technik, wird es noch einfacher Daten zu manipulieren. Smarty, is in meinen Augen auch sehr überladen, wobei man immer unterscheiden muss, wo das Einsatzgebiet ist.
Bei einer häufigen Änderung der Ansicht zieht Smarty zuviel mit, zumindest in meinen Augen MVC: Sowas in der Art hast du schon angeschrieben: Trennung von Daten und Layout nur meint man damit, dass das Ausgabe-Format egal ist. Zb: (x)HTML, XML, PHP, OpenOffice-Dokument, ... Is nix anderes als eine Template, die das Format angibt Modul-System: Suche mal nach dem Begriff Hook-System. Bedautet: Das System weiß welche Module vorhanden sind, auch wenn sie ned geladen sind. Kann diese im Notfall nachladen Zusätzlich können die Module untereinander verbinden. __________________ Sven-Marcus Maderbacher Cu l8er Nev the XxX Projekte: www.Nev-Hilft.de die Seite für Coder Master of www.Burnworld.de |
#18
| |||
| |||
Danke, das bringt mir wieder einige neue Sichtweisen auf die Geplanten Features Auch MvC habe ich nun besser verstanden. Gute kurze Erläuterung deinerseits! AJAX: Ich will AJAX nur nutzen, um Anfragen an den Server zu stellen und Daten zurückzusenden. Diese Daten werden mittels DOM aus der Seite gezogen und vom Server vor der Verarbeitung nochmals geprüft. Kann man heutzutage (bzw. bis zum Ende meines Projekts - offiziell läuft das Projekt vom Feb. 2007 bis Mai 2007) Javascript als Standard voraussetzen oder sollte ich ganz normal (php, hmtl) programmieren und zusätzlich dann AJAX realisieren? Ich kann euch mal mein AJAX-Beispiel demnächst posten (jetzt keine Zeit), dann könnt ihr mir mal die Schwachpunkte nennen |
#19
| |||
| |||
Zitat:
|
#20
| ||||
| ||||
Hi @gain In meinen Augen is AJAX eine spielerei sicher hilft es den Daten-Flut zuminimieren, bzw. auch eine gewisse Usibility zu verbessern. Es zeichnet sich ein Trend im Web ab, den wir eigentlich schon mal hatten => HTML 1.0 XHTML bzw XML is nix anderes, nur etwas erweitert. Bestimmte Typen von Seiten (Staat, Stadt, Gemeide, bzw. Öffentliche) haben seit letztem Jahr die Richtlinie Behinderten Gerecht zu sein. Wie wir alle wissen gibt es verschiedene Stufen von behinderungen, Hör-, Seh-, Geistig-, Motorisch-Behindert, ... Jede dieser Gruppen kann gewisse Sachen, die die andere ned kann. daher muss man sich auf einen Standart festlegen, mit dem man (je nach Zielrichtung) die einzelnen Gruppen bedienen kann. => XHTML / XML (beides ohne JS) Wenn man diese Zielsetztung hat, kann man mit AJAX nichts anfangen, da man dadurch diese Leute aussperrt. Ein Vorurteil möchte ich noch dementieren (gehört eigentlich ned ganz dazu, aber könnte folgen) Nur weil eine Seite auch behinderten gerecht ist, is sie ned unhübsch bzw. spricht den "normalen" user nicht an. Das stimmt nicht! Schaut euch Zengarden an, diese kann man mit neuen Browsern (FF, MZ), mit älteren (IE, NS4) und auch Lesegeräten anschaun. __________________ Sven-Marcus Maderbacher Cu l8er Nev the XxX Projekte: www.Nev-Hilft.de die Seite für Coder Master of www.Burnworld.de |
#21
| |||
| |||
Barrierefreiheit hat erst einmal nicht so viel mit den eingesetzten Mitteln zu tun, sondern eher mit korrekten semantischen Zusammenhängen. Dabei bedeutet der Einsatz von Javascript nicht *zwangsläufig* das Abkommen von semantisch korrektem (X)HTML. Leider bildet die aktuelle Browsergeneration immer noch eine andere Barriere, nämlich die der gemeinsamen Untermenge an Features, die diese bereitstellen. Vergleichbar mit dem X3-Standard in der Druckindustrie, die den Einsatz vorhandener PDF/PS-Features beschränkt, um maximale Kompatibilität zu gewährleisten. Ich würde mir darum also keine großen Gedanken machen; wenn dein CMS schönes HTML schreibt und somit die Möglichkeit besteht, auch gut maschinenlesbare Quelltexte zu generieren, kannste Ajax etc. ja immer noch als optionales Feature verwenden. Da das ganze eh nur (so denke ich) im Backend Verwendung findet, sehe ich da durchaus Gestaltungsspielraum, und zur Not kannst du immer noch eine Alternative "ohne Schnickschnack" dem Endbenutzer zur Verfügung stellen. |
#22
| ||||
| ||||
@Reimer: Wegen MVC müssen wir beide uns mal unterhalten. Ich hatte es schon mal für unser CMS ins Auge gefasst und möchte mal hören/lesen wie du dir das genau vorstellst. @eBoy: Solltest du nicht mal genauer definieren, was Module machen können sollen? |
#23
| |||
| |||
Nö, muss ich nicht *g* Ok, aber ich denke da gibt es erstmal nicht vieles, das jetzt schon besonders wichtig wäre... Module können alles mögliche sein (News, Artikel, Umfrage, Forum, DL-Archiv,...) Das Rechtesystem prüft Zutritts-/ Aktionsrechte. Es gibt eine DB-Tabelle module mit den grundlegenden Informationen. Jedes Modul wird dazu wohl auch noch (mindestens) eine Tabelle erhalten für weiteres und z.B. die Rechte für die verschiedenen Aktionen des Moduls. Aktionen können "Subseiten" des Moduls sein, oder das lesen, editieren oder schreiben in einem Board usw. Grundsätzlich soll der Aufruf eines Moduls geprüft werden und dann das Modul geladen werden. Was weiter geschieht, hängt vom Module und der entsprechenden Datei ab. Was soll ich dazu momentan noch schreiben? Habt ihr noch Fragen? Ich bin @Meisterschule und habe somit wenig Zeit. Evtl später mehr... Gruß |
#24
| |||
| |||
Zitat:
|
#25
| ||||
| ||||
Hi @ll Generell würde ich das Frontend Barrierefrei machen. Im Backend, kann man noch immer definieren welche Komponenten Aktiv sein müssen. Siehe RedDot IE 6.0 WIN XP, mit SP1 aber ned SP2 JS Aktiviert __________________ Sven-Marcus Maderbacher Cu l8er Nev the XxX Projekte: www.Nev-Hilft.de die Seite für Coder Master of www.Burnworld.de |
Stichworte |
- |
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Rechtesystem: Aufbau und Ablauf | eBoy | Entwicklung und Konzeption sozialer Software | 1 | 26.12.2005 14:44 |