7 changed files with 114 additions and 4 deletions
@ -1,10 +1,120 @@ |
|||||||
--- |
--- |
||||||
title: "Personal Website" |
title: "Personal Website" |
||||||
description: "Stuff go here." |
description: "Open-source content management system." |
||||||
|
navigation: false |
||||||
--- |
--- |
||||||
|
|
||||||
# Test! |
<small>Open-source content management system.<br> |
||||||
|
Repository at |
||||||
|
[GitHub](https://github.com/riyyi/website), |
||||||
|
[GitLab](https://gitlab.com/riyyi/website) or |
||||||
|
[Gitea](https://git.riyyi.com/riyyi/website). |
||||||
|
</small> |
||||||
|
|
||||||
This is another article. |
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 |
||||||
|
- [Klein.php](https://github.com/klein/klein.php) |
||||||
|
- [Mailer](https://github.com/txthinking/Mailer) |
||||||
|
- 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 |
||||||
|
``` |
||||||
|
|
||||||
|
<div class="row"> |
||||||
|
<div class="col-12 col-lg-6"> |
||||||
|
|
||||||
|
Pictured below is the EER (Enhanced entity-relationship) diagram of the MySQL database: |
||||||
|
 |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
Some of the pages of the CMS. |
||||||
|
|
||||||
|
<div class="row"> |
||||||
|
<div class="col-12 col-lg-6"> |
||||||
|
|
||||||
|
Admin menu. |
||||||
|
 |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="col-12 col-lg-6"> |
||||||
|
|
||||||
|
CRUD index page, displaying all the entries of this table, including pagination. |
||||||
|
 |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="col-12 col-lg-6"> |
||||||
|
|
||||||
|
CRUD edit page, editing an entry. |
||||||
|
 |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="col-12 col-lg-6"> |
||||||
|
|
||||||
|
CRUD show page, show all values of an entry. |
||||||
|
 |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="col-12 col-lg-6"> |
||||||
|
|
||||||
|
Login page. |
||||||
|
 |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="col-12 col-lg-6"> |
||||||
|
|
||||||
|
Password reset page, showing a flash message. |
||||||
|
 |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 51 KiB |
Loading…
Reference in new issue