Bitte Feedback und Ideen für mein CMS
lima-city → Forum → Die eigene Homepage → Promotion
code
datei
datenbank
fehler
http
installation
konfiguration
leute
machen
nutzer
problem
projekt
server
stelle
string
system
teil
test
url
zeile
-
Hallo!
Ich habe vor kurzem mit PHP und MySQL-Datenbanken ein CMSfertiggestellt. Eigentlich ist es noch gar nicht fertig, aber die Basics stehen schon. Nun möchte ich von euch wissen, ob ihr das, was ich bisher gemacht habe, gut findet und was für Ideen oder Ansprüche ihr für das CMS hättet.
Ich habe außerdem vor (vielleicht) mehrere Versionen des CMS herauszubringen, also auch ILG-Blog oder ILG-Forum oder so etwas in der Art.
Der Link zum CMS (ich habe es bei SourceForge reingestellt) ist: https://sourceforge.net/projects/ilgcms/.
Die Projektseite ist aber noch nicht fertig.
Ich bedanke mich schon einmal im Voraus!
MfG. Simon D.
Beitrag zuletzt geändert: 8.9.2013 17:35:40 von simon-d -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Lass Sourceforge sein. Die wurden von einer Firma gekauft die jetzt anscheinend teils Adware in die Installer reinhaut. Github ist wesentlich besser.
Beitrag zuletzt geändert: 8.9.2013 19:53:39 von imho -
Bevor ich mir das ansehe: Was macht es besser als andere? (Zumal PHP für mich persönlich ja schon ein Minuspunkt ist, aber das liegt auch am Andwenungsfall und ist deswegen bei mir nicht nötig.)
-
Hallo!
Danke für die Antwort!
Das mit SourceForge wusste ich noch nicht. Früher war ich immer zufrieden mit denen. Ok dann schau ich mir mal Github an.
Mit was denn sonst, wenn nicht PHP soll denn das CMS deiner Meinung nach geschrieben werden, tchab??
MfG. Simon D. -
simon-d schrieb:
Mit was denn sonst, wenn nicht PHP soll denn das CMS deiner Meinung nach geschrieben werden, tchab??
MfG. Simon D.
Das CMS, welches ich für meine Seiten benutze ist in Python geschrieben und hat den Vorteil, dass ich auf eine serverseitige Sprache verzichten kann, weil es statische Seiten generiert. (Nikola ist der Name des CMS übrigens). Das verschafft mir mehr Sicherheit (die Dateien werden einfach nur ausgeliefert und mein Webserver nimmt nichts vom Client entgegen) und Geschwindigkeit (alter, die Seiten sind sogar auf Lima schnell!).
Das musst du dir so vorstellen: Ich verwalte meine Seiten, Einträge, Bilder und anderes offline. Texte kann ich bequem mit einer Markupsprache wie reSt oder markdown formatieren. Dann schmeiße ich nikola an, welches mir dann fertige HTML-Dateien generiert, die ich dann nur noch hochladen muss (macht nikola auch für mich! :) ).
Mit dem generieren nehme ich dem Webserver die Arbeit ab, dies jedes mal zu tun, wenn er eine Seite ausliefern muss (wie es ja bei PHP der Fall ist: Startseite wird angefordert => alle Details von den Datenbanken zusammen kratzen, den Stylesheet suchen und dann wird dem Client ein frisch generiertes HTML-Dokument gesendet)
Wie gesagt, kommt auf den Anwendungsfall an. Für vieles, wie einen Onlineshop braucht man eine dynamische Seite, aber wenn nur darum geht, etwas bereit zu stellen (ohne Interaktion), dann braucht man es eben nicht. Ich nehme auch kein Wordpress her, um eine simple Projektseite für die Software zu erstellen zum Beispiel, aber das alleine schon, weil sich der Content dort ja kaum ändert.
Abgesehen davon kannst du in absolut jeder Sprache ein CMS schreiben. PHP ist halt für Websiten sehr verbreitet. ;)
Und du hast mir nicht gesagt, was dein CMS denn so besser macht als andere. -
Hallo!
tchab schrieb:
Und du hast mir nicht gesagt, was dein CMS denn so besser macht als andere.
Das ist richtig. Hab's vergessen ;)
Ich möchte das CMS von sich aus sehr einfach und schlank gestalten aber ich möchte ein sehr einfach zu verwaltendes Template-System einbauen, weil das (finde ich) bei vielen CMS der große Nachteil ist - man muss mehr als doppelt so viel Arbeit in ein eigenes Template des CMS stecken, als wenn man eine "normale" Seite, die nicht dynamisch ist, erstellt. Das CMS soll also extra für Leute mit genug HTML-, CSS- und PHP-Kenntnissen sein, die dynamische Seiten brauchen. Denn für nicht-dynamische Seiten braucht man, wie du sehr richtig erkannt hast, kein solches CMS, außer man möchte mit mehreren Leuten an einem Projekt arbeiten und hat sehr viele Seiten zu verwalten.
MfG. Simon D.
Beitrag zuletzt geändert: 8.9.2013 20:22:17 von simon-d -
simon-d schrieb:
Ich möchte das CMS von sich aus sehr einfach und schlank gestalten aber ich möchte ein sehr einfach zu verwaltendes Template-System einbauen, weil das (finde ich) bei vielen CMS der große Nachteil ist.
Da gebe ich dir vollkommen Recht. Schau dir mal https://www.djangoproject.com/ an, das ist zwar für Python, aber es gibt bestimmt vergleichbares für PHP oder du schaust dir direkt die Sourcen an und lässt dich inspirieren. Nikola nutzt das, und es ist sehr bequem. :) -
Hallo!
Noch einmal zurück zur ursprünglichen Frage:
Was würdet ihr euch sonst noch von einem CMS wünschen?
Ich bin für alle Ideen offen (ob ich sie auch umsetzen kann, ist eine andere Sache ;)).
Das Standard-Design ist schon fertig geplant aber ansonsten habe ich eigentlich keine Ideen (leider)...
Ach ja:imho schrieb:
Lass Sourceforge sein. Die wurden von einer Firma gekauft die jetzt anscheinend teils Adware in die Installer reinhaut. Github ist wesentlich besser.
Ich habe auch gesehen, dass Sourceforge (schon vor längerem) aufgekauft wurde, habe aber keine einzige Beschwerde im Internet gesehen, dass irgendwo Adware oder so etwas in die Installer reingehauen wurde. Eigentlich habe ich fast keine Beschwerden gefunden. Könntest du mir einen Link schicken mit der Info? Weil ich habe mich jetzt schon so schön bei SF eingerichtet...
MfG. Simon D. -
http://www.golem.de/news/sourceforge-streit-um-adware-installer-1308-101219.html
-
Hallo!
imho schrieb:
http://www.golem.de/news/sourceforge-streit-um-adware-installer-1308-101219.html
Habe ich mir durchgelesen, aber wie es scheint ist das mit der Adware nur bei Installern, also für exe's. Deshalb bleibe ich erst einmal bei SF. Ich werde zwar noch (mit Python) einen Installer für das CMS programmieren und außerdem ein Verwaltungsprogramm, aber da werde ich dann mal schauen wie das wird. Ich habe mich wie gesagt bei SF schon so gut eingerichtet und steige bei GitHub noch nicht ganz durch (z. B. hat man da für das Projekt auch einen Webspace?).
Aber danke für die Info!
MfG. Simon D. -
Willst du dein Projekt wirklich bei einer Seite hosten auf der es auch Adware gibt? Da wäre mir nicht wohl wohl bei.
Github ist in meinen Augen wesentlich besser. Du kannst recht einfach und ohne Kommandozeile das Versionskontrollsystem git nutzen.
Jede Änderung die du auf deinem lokalen Rechner machst kannst du commiten und in deinen Sourcecode übertragen (Man kann dann auch beliebig zwischen den Änderungen hin und her springen). Du kannst deine Software aufzweigen usw. Das ganze ist wirklich gut und intuitiv.
Weiterhin kann man auch andere Projekte forken (eine Kopie erstellen) und diese somit ganz einfach übernehmen. Nutzer können zudem aktiv Patches über Pull Request bereitstellen die du dann per Klick einfügen kannst. Einen Issuetracker gibt es auch.
Als Opensourcenutzer kannst du dabei Unbegrenzt viele Repos aufmachen. -
Hallo,
nach dem guten Beitrag von imho kann ich ihm eigentlich nur Beipflichten.
Vorweg, mein Anspruch an ein CMS ist sehr hoch deswegen benutze ich selbst modX, ein CMS, welches eigentlich gar keines ist, sondern mehr ein Framework. Es bietet keine Plugins oder Module im herkömmlichen Sinne an, sondern nur Chunks, Snippets und Template-Variablen, aus denen sich aber binnen kürzester Zeit ein Blog oder Gästebuch zusammensetzten lässt, welches komplett selbst gestaltet werden kannund bei dem der Code zu 100% in deiner Hand liegt!
Für Leute, die nur schnell ein stabiles CMS brauchen, ohne so viel Eigenleistung zu investieren, empfehle ich dagegen meist Typo3, Joomla oder Drupal, je nachdem wo ich gerade mehr Lust zu habe und ob derjenige danach noch Hilfeleistungen von mir erhalten will.
So, ich habe dein CMS also heruntergeladen und ausprobiert um zu sehen, ob sich das ganze den auch als CMS verwenden lässt und will nicht unhöflich sein, aber es ist großer Dreck. Von Anfang an gab es Probleme und ich muss ehrlich fragen ob das Teil bei dir wirklich läuft? Wenn ja dann installier ich es nochmal um mir noch ein paar Sicherheitslücken rauszusuchen um dir im Liveberieb zu zeigen, was du alles besser machen kannst. Über diese Lücken bin ich nämlich beim letzten Mal schon gestolpert.
Damit du aber was lernen kannst, hiereinmal ein kleiner Erfahrungsbericht:
Die Installation – Schon vorweg mehr habe ich nicht gemacht, warum das so ist steht am Ende.
Damit die Installation starten kann entferne ich estmal die Leerzeichen im Pfad zum CMS, das macht man nicht!
So danach stellt sich die nächste Frage – Welche Installation? Wenn man nicht aktiv nach dem Ordner installation sucht findet man die Installation nicht, statt dessen bekommt man eine Fehlermeldung, dass irgendwelche Datei nicht existieren, die erste davon soll wohl die Zugangsdaten beinhalten.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-1.png
Kurz um ich habe an den Anfang der index-Datei eine Weiterleitung zur Installation geschrieben, falls diese Datei nicht existiert. Das hättest du auch machen können, so ist die Installation doof. Außerdem fällt hierbei auch noch auf, dass du alle Zeichenketten harkodiert verwendest, so sind Änderungen schwer durchzuführen, da man immer alle Vorkommen des String finden muss und dann auch noch sicher sein muss, dass er auch so gemeint ist – Also habe ich das für diesen Fall auch angepasst.<?php define('ROOT_PATH', dirname(__FILE__)); define('CONFIGURATION_PATH', ROOT_PATH . '/konfiguration'); define('CONNECTION_DATA', CONNECTION_DATA . '/zugangsdaten.php'); if(!is_readable(CONNECTION_DATA)){ header('Location: installation/index.php'); exit; } include CONNECTION_DATA; // …
So danach kam auch endlich die Installation. [
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-2.png
Aber auch an dieser Stelle war ich gemein und habe die beiden Links oben rechts ausprobiert und bin damit auf einer nicht definierten Seite gelandet. Das selbe ist mir dann nochmal mit dem Link passiert, auf dem man Bugs melden soll, auch das könnte man abstellen.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-3.png
Dann ging es weiter zur zweiten Seite der Installation.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-4.png
Doch auch auf dieser Seite wurde ich von einem Fehler begleitet.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-5.png
Also habe ich auch diesen berichtigt, wie bereits den Fehler auf der Startseite, so dass die Zeile 33 bei mir nun so aussieht:$fehler = isset($_GET['fehler']) ? $_GET['fehler'] : false;
Anschließend habe ich die Datenbank konfiguriert, dazu habe ich eine neue DB angelegt und einen eigenen Nutzer, der nur auf diese DB zugriff hat. Nach den ganzen Anfängerfehlern, die bisher begangen wurden konnte ich es nicht riskieren das Programm auf eine andere DB losgehen zu lassen.
Nach der DB-Konfiguration wollte ich aber auch noch sehen, wie dein CMS mit einer Falscheingabe bei den Zugangsdaten umgeht. Das Fazit muss lauten scheiße.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-6.png
Da sind wie ich befürchtet hatte gar keine Sicherungen eingebaut, die die Fehler sinnvoll behandeln könnten. Da es mir jedoch zu nervig war diese Fehler selbst zu bereinigen bin ich einen Schritt zurück gegangen und habe die korrekten Daten eingegeben.
Doch auch nachdem ich die korrekten Daten eingegeben habe bin ich auf einer Seite bestehend aus Fehlermeldungen gelandet.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-7.png
Diese Fehler musste ich nun leider behandeln, um in der Installation fortzufahren.
Und wie bereits bei den ganzen Fehlern zuvor sind auch diese Fehler echt strunzdumme Fehler, die gar nicht passieren dürfen! Wie man sieht sind die ersten Fehler alle in Zeile 38, danach folgen noch einige weitere Fehler. Also sehen wir uns mal Zeile 38 an.// Ich habe die Zeile umgebrochen, // um sie besser lesen zu können. $zugangsdaten = "<?php $server = '".$MySQL_Server."'; $user = '". $MySQL_User."'; $passwort = '".$MySQL_Passwort."'; $datenbank = '". $MySQL_Datenbank."'; ?>";
Was fällt hier auf? – Richtig Variablen maskieren kennt der Autor nicht.
Also auch diesen Fehler bereinigt und dabei gleich eine sinnvollere Schreibweise gewählt, damit der Code besser zu lesen ist.$zugangsdaten = sprintf( "<?php" . PHP_EOL . "\$server = '%s';" . PHP_EOL . "\$user = '%s';" . PHP_EOL . "\$passwort = '%s';" . PHP_EOL . "\$datenbank = '%s';", $MySQL_Server, $MySQL_User, $MySQL_Passwort, $MySQL_Datenbank );
Nach dieser Korrektur habe ich mir die weiteren Fehler angesehen und siehe da schon wieder ein hart codierter String in Zeile 39 und interessanterweise ist es der selbe Teil den ich bereits ganz am Anfang der Installation korrigiert habe, es wäre also definitv sinnvoll diese ganzen Teile in einer Konfigurationsdatei auszulagern und sie dort als Konstanten zu speichern. In diesem Fall war die Datei übrigens nicht zu finden, da der falsche Ordner angegeben wurde zum Vergleich:// Original: $datei = fopen("../konfiguration/zugangsdaten.php","w"); // Meine Korrektur $datei = fopen("../../konfiguration/zugangsdaten.php","w");
Der Rest waren dann wieder Folgefehler, weil es keine vernünftige Fehlerbehandlung gibt!
Anschließend wurde ich auf die 3. Seite der Installation weitergeleitet, wo ich meine Nutzerdaten eingeben sollte.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-8.png
Doch auch auf dieser Seite wurde ich von einer unschönen Fehlermeldung begleitet.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-9.png
Es ist übrigens genau (!?!) der gleiche Fehler wie bereits auf der vorherigen Seite, wo auch $_GET['fehler'] falsch abgefragt wurde.
Nachdem ich auf dieser Seite meine Anmeldeinformationen eingegeben habe wurde ich, ohne Fehler, zu folgender Seite weitergeleitet:
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-10.png
Durch einen Klick auf "Starten" wurde ich allerdings gleich zum nächsten Fehler weitergeleitet:
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-11.png
Und dieser Fehler war in mehrfacher Hinsicht interessant.
1. Warum werden die Nutzerdaten bereits aus der Datenbank geholt, obwohl ich mich zu diesem Zeitpunkt noch nicht eingeloggt haben kann?
2. Es wurden offensichtlich wieder keine Fehler behandelt, den die Funktion mysql_fetch_array() wird ja erst zu einem späteren Zeitpunkt aufgerufen und an der Stelle hätte ja eine Instanz zurückkommen müssen, auf die man die Funktion anwenden kann.
3. Wie kann es an dieser Stelle zu einem Fehler kommen, es hätte doch eine Instanz zurückgegeben werden müssen außer wenn die Datenbank leer ist, aber warum ist diese leer, wenn doch die Datenbank mindestens einen Nutzer beinhalten sollte?
Um also den 3. Fehler zu korrigieren muss ich weiter ausholen, denn um ihn vollständig nachzuvollziehen musste ich einen Schritt zurück gehen und mir ansehen, wie den die Datenbank angelegt und befüllt wurde und habe dabei gleich die nächsten Fehler entdeckt.
Wie sollte also die Datenbank angelegt werden? So:require_once('../../konfiguration/zugangsdaten.php'); mysql_connect($server,$user,$passwort); mysql_select_db($datenbank); $befehl = file_get_contents('datenbank_erstellen.sql'); mysql_query($befehl); mysql_close(); header("Location: ../Installation_beenden");
Das mit den hartcodierten Strings hatte ich ja bereits (es ist übrigens schon wieder der selbe…), danach folgt der DB-Login, dies ist zwar auch nervig, das das nicht zentral gesteuert ist, aber seis drum anschliessend wird eine SQL-Datei eingelesen und in der Variablen $befehl gespeichert. Diese soll anschließend mittels mysql_query() auf der DB ausgeführt werden. Und genau da ist das Problem, das geht nicht so, wie der Autor sich das vorgestellt hat, denn die Datei enthält alle SQL-Statements um alle nötigen Tabellen (übrigens nur 4, ungewöhnlich und wahrscheinlich auch nicht sinnvoll…) zu erstellen. Doch genau das kann PHP nicht. PHP verabschiedet sich nach dem ersten ; und sagt, danke, mehr brauche ich nicht. In diesem Fall sogar noch früher, warum weiß ich nicht, brauche ich auch nicht wissen, schließlich wurde hier schon in der Architektur gepatzt. Übrigens ist hier mal der DB-Stand nach der Installation, wie man sieht sind gar keine Tabellen erstellt worden.
http://nemoinho.lima-city.de/ilg-test/img/ILG-install-12.png
Und genau an dieser Stelle ist dann auch mein Test zuende, da offensichlich nicht mal ein CMS installiert wurde.
Wie gesagt, ich würde jedem, wirklich jedem davon abraten dein CMS in dieser Form zu nutzen. Aufgrund meines Installationsversuchs habe ich viele Quelltexte aus dem CMS gesehen und würde deswegen davon abraten das CMS überhaupt zu benutzen, auch in der Zukunft mit neueren Versionen. Hier wurden einfachste Verfahren offensichlich nicht verstanden, da sie püberhaupt nicht angewendet wurden und entsprechend auch keine weiteren Programmiertechnischen Vorgehensweisen eingehalten. Außerdem ist das CMS im Installierten Zustand ein Einfallstor, um den Webspace zu kapern, da es keinerlei Prüfungen durchführt. Dies kann ich mit Sicherheit sagen, obwohl ich das CMS nicht zuende installiert habe. Da ich ich gesehen habe wie simpel die DB organisiert war und wie wenige Dateien insgesamt benötigt wurden habe ich den Quelltext einmal etwas überflogen und dabei harstäubende Sicherheitslücken gefunden.
Kurz um ein typisches Anfängerprojekt, ich habe als ich angefangen habe auch häufiger solchen Dreck geschrieben, deswegen kann ich nachvollziehen, worum es in dem Programm geht. Aber um andere davor zu schützen ihr System aufzureißen solltest du das CMS definitiv nicht mehr verbreiten.
Diese Lücken werde ich hier aber nicht veröffentlichen, da ich gesehen habe, dass du das CMS hier auf lima installiert hast und somit dein Webspace ohne Probleme gekapert werden kann, lösche also zuvor deine Installation oder schreibe mich per PN an, wie du das Problem beseitigen kannst.
Bevor du dich aber nun daran setzt den ganzen Code zu verbessern möchte ich dir sagen, dass du (so leid mir das auch tut) am besten nochmal von vorne beginnst und nichts, aus der alten Codebasis wiederverwendest, das HTML ist gut, sauber strukturiert und so, aber das PHP solltest du komplett neu schreiben.
Als kleine Hilfestellung solltest du dir überlegen, warum du ein und den selben String so oft benutzt und warum du alle Naselang eine neue mysql-Verbindung öffnest, das verlangsamt nur den Netzwerkverkehr, bzw. den Verkehr zwischen Rechner und Storage. Falls du wissen willst warum: Bei vielen professionellen Serversystemen liegt die Datenbank auf einem ganz anderen Rechner, obwohl sie zum Teil immernoch als localhost zu erreichen ist. Deswegen sollte man auf die Datenbankverbindung etwas achten.
Übrigens habe ich die Installation auf einem Debian-system mit dem Apache aus den Repositories durchgeführt, welche genauen Einstellungen ich sonst noch vorgenommen habe weiß ich nicht mehr genau. Ich habe aber definitv etwas am Fehlerprocessing herumgespielt, um möglichst jeden Fehler zu finden.
* Edit: Ich habe übrigens gerade gesehen, dass ich in der Nähe von dir zur Schule gegangen bin, ich war auf der G17 und hatte Deutsch an der GSK und Sport teilweise in der Schule am Stübenhofer Weg oder wie die das heißt…
Mit freundlichen Grüßen
Beitrag zuletzt geändert: 12.9.2013 18:55:02 von nemoinho -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage