router.php
Gesponsorde koppelingen
PHP script bestanden
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
// Start beveiligde sessie
session_set_cookie_params(['httponly' => true, 'secure' => true]);
session_start();
session_regenerate_id(true);
// Uitloggen
function logout(){
session_destroy();
setcookie('auth_token', "", time() - 3600);
header('Location: login');
exit;
}
// Stel GEBRUIKERS-IP en GEBRUIKERS-AGENT in
if(!isset($_SESSION['ip'])) $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
if(!isset($_SESSION['ua'])) $_SESSION['ua'] = $_SERVER['HTTP_USER_AGENT'];
// Uitloggen wanneer het GEBRUIKERS-IP en de GEBRUIKERS-AGENT niet gelijk zijn aan het werkelijke GEBRUIKERS-IP en de GEBRUIKERS-AGENT
if($_SESSION['ip'] != $_SERVER['REMOTE_ADDR'] || $_SESSION['ua'] != $_SERVER['HTTP_USER_AGENT']){
logout();
}
// Haal de URL voor de ROUTER op
$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$urlSegments = explode('/', trim($url, '/'));
$action = !empty($urlSegments[1]) ? $urlSegments[1] : 'login';
// Een lijst met beschikbare pagina's voor wanneer de gebruiker niet is ingelogd
$allowed_actions = ['login'];
// Stuur de gebruiker door naar de homepage als deze niet is ingelogd of als de pagina niet in de $allowed_actions-lijst staat
if(!in_array($action, $allowed_actions) && !isset($_COOKIE['auth_token'], $_SESSION['auth_token'])){
header('Location: login');
exit;
}
// Als het COOKIE-token niet overeenkomt met het SESSION-token, wordt de gebruiker uitgelogd
else if(isset($_COOKIE['auth_token'], $_SESSION['auth_token']) && $_COOKIE['auth_token'] !== $_SESSION['auth_token']){
logout();
}
else{
require_once 'inc/config.php';
// De ROUTER
switch($action){
case 'login':
require_once 'model/Login.php';
require_once 'ctrl/LoginCTRL.php';
$ctrl = new LoginCTRL;
break;
case 'redirect-login':
header('Location: login');
exit;
case 'logged-in-page':
require_once 'ctrl/LoggedInCTRL.php';
$ctrl = new LoggedInCTRL;
break;
case 'logout':
logout();
default:
require_once 'ctrl/404CTRL.php';
$ctrl = new notFoundCTRL;
break;
}
$ctrl->pageControl();
}
?>
// Start beveiligde sessie
session_set_cookie_params(['httponly' => true, 'secure' => true]);
session_start();
session_regenerate_id(true);
// Uitloggen
function logout(){
session_destroy();
setcookie('auth_token', "", time() - 3600);
header('Location: login');
exit;
}
// Stel GEBRUIKERS-IP en GEBRUIKERS-AGENT in
if(!isset($_SESSION['ip'])) $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
if(!isset($_SESSION['ua'])) $_SESSION['ua'] = $_SERVER['HTTP_USER_AGENT'];
// Uitloggen wanneer het GEBRUIKERS-IP en de GEBRUIKERS-AGENT niet gelijk zijn aan het werkelijke GEBRUIKERS-IP en de GEBRUIKERS-AGENT
if($_SESSION['ip'] != $_SERVER['REMOTE_ADDR'] || $_SESSION['ua'] != $_SERVER['HTTP_USER_AGENT']){
logout();
}
// Haal de URL voor de ROUTER op
$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$urlSegments = explode('/', trim($url, '/'));
$action = !empty($urlSegments[1]) ? $urlSegments[1] : 'login';
// Een lijst met beschikbare pagina's voor wanneer de gebruiker niet is ingelogd
$allowed_actions = ['login'];
// Stuur de gebruiker door naar de homepage als deze niet is ingelogd of als de pagina niet in de $allowed_actions-lijst staat
if(!in_array($action, $allowed_actions) && !isset($_COOKIE['auth_token'], $_SESSION['auth_token'])){
header('Location: login');
exit;
}
// Als het COOKIE-token niet overeenkomt met het SESSION-token, wordt de gebruiker uitgelogd
else if(isset($_COOKIE['auth_token'], $_SESSION['auth_token']) && $_COOKIE['auth_token'] !== $_SESSION['auth_token']){
logout();
}
else{
require_once 'inc/config.php';
// De ROUTER
switch($action){
case 'login':
require_once 'model/Login.php';
require_once 'ctrl/LoginCTRL.php';
$ctrl = new LoginCTRL;
break;
case 'redirect-login':
header('Location: login');
exit;
case 'logged-in-page':
require_once 'ctrl/LoggedInCTRL.php';
$ctrl = new LoggedInCTRL;
break;
case 'logout':
logout();
default:
require_once 'ctrl/404CTRL.php';
$ctrl = new notFoundCTRL;
break;
}
$ctrl->pageControl();
}
?>