Todo app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

3.1 KiB

title description navigation date img tags
Personal Website An open-source content management system, used for this website. false 2025-03-03 /img/personal-website/admin-menu.png [PHP 7 MySQL jQuery Software]

Open-source content management system.
Repository at GitHub, GitLab or Gitea.

This is the CMS that is used for this website! It's written in PHP 7, MySQL and jQuery, with the libraries Klein.php and Mailer.

Features:

  • PHP 7
  • Composer
  • MVC design pattern
  • MySQL database for storing data
  • CMS with CRUD functions for managing data
  • ORM for mapping between PHP classes and data
  • Login system
    • Stay logged in using cookies
    • Forget password with a generated link send using mail
  • Security mitigations
    • Password hashing using BCrypt
    • Per-user cryptographically secure generated salt
    • SQL injection protection using prepared statements
    • XSS
      • Cookies set to 'HttpOnly'
      • Escape rendered user input using: htmlentities(ENT_QUOTES | ENT_HTML5, 'UTF-8');
    • CSRF
      • Cookies 'SameSite' set to 'Strict'
      • Token for each session used in POST/PUT/DELETE requests
  • Bootstrap
  • jQuery

Directory structure:

.
├── app
│   ├── classes
│   │   └── <classes>
│   ├── controllers
│   │   └── <controllers>
│   ├── helper.php
│   ├── model
│   │   └── <models>
│   ├── seed.php
│   ├── traits
│   │   └── Log.php
│   └── views
│       └── <views>
├── composer.json
├── config.php
├── config.php.example
├── public
│   ├── index.php
│   └── <files>
├── route.php
├── syncconfig.sh
├── syncconfig.sh.example
└── sync.sh

Pictured below is the EER (Enhanced entity-relationship) diagram of the MySQL database: website database design

Some of the pages of the CMS.

Admin menu. admin menu

CRUD index page, displaying all the entries of this table, including pagination. crud index page

CRUD edit page, editing an entry. crud edit page

CRUD show page, show all values of an entry. crud show page

Login page. login page

Password reset page, showing a flash message. password reset page