Guten Tag “liebe” Retro Community. Heute moechte ich mein “ach so tolles” Projekt vorstellen.
Hierbei handelt es sich um ein Retro Content Management System auf eine neue Art. Was da genau neu sein wird erfaehrt ihr gleich aber kurz moechte ich noch sagen bzw. schreiben wie es dazu kam. In der Szene kann man sehr viel nachlesen wo Leute meinen dass mal was neues kommen muss. Also wirklich was neues und nicht die ganze Zeit von Sulake (Habbo) abgeschaut (Bilder ausgeschlossen).
Aus diesem Grund habe ich angefangen ein CMS zu programmieren. Aber nicht im Habbo Look sondern in einem Flat Desing was von mir gestalltet wurde. Ausserdem arbeitet es mit Media Queries. Das heisst soviel wie “die Web Seite ist auf allen Endgeraeten angepasst”. Schaut doch einfach mal im Spoiler “Wunderkiste” nach, dort findet ihr die ersten Screenshots. Soviel zum Thema Desing.
Kommen wir nun zum Interessanten Teil, die Technik. Das CMS wird moeglichst professionell programmiert. Also wird Objektorientierte Programmierung (kurz: OOP) angewendet. Als MySQL-Schnittstelle wird PHP DATA Objects (kurz: PDO) verwendet. Ein ausgekluegeltes Template System sowie ein Language System was auf die IP des Besuchers reagiert hat das ganze auch (Sprachen: English, Deutsch und Spanisch! Natuerlich kann man selbst noch mehr Sprachen hinzufuegen). Also recht cool. Gegen Sicherheitskritische Attacken hat es einen guten Schutz. XSS, SQLi, CSRF und Session Fixation sind zu 95% ausgeschlossen. Jeder Input und andere Kritische Stellen werden gefiltert also ist XSS nicht moeglich. Bei SQLi regelt es PDO mit seinem “prepared statement”. Also ist SQLi auch nicht moeglich. Bei CSRF sieht es anders aus. Ich habe mir lange ueberlegt wie ich nun ein Token System mache. Aber um ehrlich zu sein.. Das Token System wurde von mir irgendwie zusammen kopiert Xd. Aber es ist sicher. Gegen Session Fixation wird ganz einfach aber gut “session_regenerate_id()” angewendet. Das ersaetzt die alte Session ID durch eine neue. Das war es auch schon ueber die Technik. Ah genau! Fuer die ganz schlauen! Schaut im Spoiler “Wunderkiste” nach. Dort hat es ein paar Snippets vom CMS.
Features hat das ganze auchnoch. Wenn ihr jetzt irgendwie Badge Shop etc. erwartet. Schlagt es euch aus dem Kopf.. Das CMS wird mehr Private (nicht oeffentliche) Features besitzten als Public (oeffentliche) Features. Hmm es hat noch garkeine Public Features wenn ich so nachdenke Xd... Aber Private Features hat es schon ein paar. Ich verrate bisher nur ein Feature und zwar waere das automatisches Anpassen der Datenbank fuer den Emulator. Ob Swift, Plus, Butterstorm, Butterfly oder Phoenix Emulator. Stellt man in der Config ein welcher Emulator man anwenden will werden die benoetigten Informationen geupdatet. Und jetzt kommt das beste! Die User Informationen werden mit geupdeaet! Also erspart man sehr viel arbeit! Das wars!
Zu guter letzt will ich noch sagen bzw. schreiben. Ja ich weiss die “Vorstellung” ist schrecklich geschrieben. Das ist nunmal meine groesste Schwaeche. Was ihr auchnoch wissen solltet! Das ganze ist ein Projekt aus Spass. Zurzeit hab ich daran Spass in PHP zu programmieren. Es bockt jeden Tag mehr. Aber es kann irgendwann mal passieren das ich keine Lust mehr darauf hab. Dann wird nichtmehr (zumindest eine weile lang) nichtmehr daran programmiert.
Wichtige Informationen:
Das Frigus Hotel wird das Public Beta Hotel sein vom Firegraph CMS Version 1.0!
Name des CMS: Firegraph
Kommende Version: 1.0
Release Datum: Unknow!
Public Beta: https://www.facebook.com/Frigushotel
Liebe Gruesse Equa Shepard
P.s Klar gibt es bestimmt dinge die man besser programmieren koennte, man kann mich auch gerne darauf ansprechen aber dann bitte NETT und nicht irgendwie tyrannisch! Dankeschoen. Und ja es werden mehr Snippets / Screens kommen. So 1 Screen und 1 Snippet pro Woche.
Wunderkiste:
Spoiler anzeigen
Zurzeit 1 Screen (noch nicht fertig):
Spoiler anzeigen
Zurzeit 1 Snippet:
Spoiler anzeigen
public function login($username, $password) {
$user_browser = $_SERVER['HTTP_USER_AGENT'];
$query = $this->db->prepare("SELECT `password`, `id` FROM `users` WHERE `username` = ? ");
$query->bindValue(1, $username, PDO::PARAM_STR);
try {
$query->execute();
$data = $query->fetch();
$sqlid = $data['id'];
$sqlpassword = $data['password'];
if($sqlpassword === hash('sha512', $password.$user_browser)) {
return $sqlid;
} else {
return false;
}
} catch(PDOException $e) {
die($e->getMessage());
}
}
Alles anzeigen