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
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
Some of the pages of the CMS.