Classes
Maar dit zal vast niet de goede/beste methode zijn. Hoe kan ik dit beter doen?
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
// system.class.php
class System {
private $db;
public function __construct($db)
{
$this->db = $db; // Connectie met database
}
/* Gebruikers account */
public function login($username, $password)
{
$stmt = $this->db->prepare("SELECT hash, status FROM users WHERE username=? AND password=?");
$stmt->bind_param('ss', $username, $password);
$password = $this->password($password);
$stmt->execute();
$stmt->bind_result($hash, $status);
$stmt->store_result();
if ($stmt->num_rows === 1)
{
// Gebruiker gevonden
$stmt->fetch();
if ($status === 1)
{
// Ingelogd
$_SESSION['user'] = $hash;
}
return $status;
}
return 0;
}
public function user($get = 'id')
{
if (isset($_SESSION['user']))
{
$stmt = $this->db->prepare("SELECT " . $get . " FROM users WHERE hash=?");
$stmt->bind_param('s', $_SESSION['user']);
$stmt->execute();
$stmt->bind_result($user);
$stmt->store_result();
if ($stmt->num_rows === 1)
{
// Gebruiker gevonden
$stmt->fetch();
return $user;
}
}
return false;
}
// Hier komen dan meer functions (bijv. getCustomer($id, $get) en getSupplier($id, $get) etc.)
/* Standaard functies */
public function password($password)
{
$salt = 'hiereensalt';
return hash('sha256', $salt . $password);
}
public function randomHash()
{
return hash('sha1', rand() . microtime());
}
public function msg($type, $msg)
{
$_SESSION['msg'][$type] = $msg;
}
}
?>
// system.class.php
class System {
private $db;
public function __construct($db)
{
$this->db = $db; // Connectie met database
}
/* Gebruikers account */
public function login($username, $password)
{
$stmt = $this->db->prepare("SELECT hash, status FROM users WHERE username=? AND password=?");
$stmt->bind_param('ss', $username, $password);
$password = $this->password($password);
$stmt->execute();
$stmt->bind_result($hash, $status);
$stmt->store_result();
if ($stmt->num_rows === 1)
{
// Gebruiker gevonden
$stmt->fetch();
if ($status === 1)
{
// Ingelogd
$_SESSION['user'] = $hash;
}
return $status;
}
return 0;
}
public function user($get = 'id')
{
if (isset($_SESSION['user']))
{
$stmt = $this->db->prepare("SELECT " . $get . " FROM users WHERE hash=?");
$stmt->bind_param('s', $_SESSION['user']);
$stmt->execute();
$stmt->bind_result($user);
$stmt->store_result();
if ($stmt->num_rows === 1)
{
// Gebruiker gevonden
$stmt->fetch();
return $user;
}
}
return false;
}
// Hier komen dan meer functions (bijv. getCustomer($id, $get) en getSupplier($id, $get) etc.)
/* Standaard functies */
public function password($password)
{
$salt = 'hiereensalt';
return hash('sha256', $salt . $password);
}
public function randomHash()
{
return hash('sha1', rand() . microtime());
}
public function msg($type, $msg)
{
$_SESSION['msg'][$type] = $msg;
}
}
?>
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
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
<?php
// config.php
/* Errors weergeven */
ini_set('display_errors', false); // true/false
error_reporting(E_ALL);
/* Sessie starten */
session_start();
/* Instellingen */
$error = false;
define('TITLE', 'Hier een titel'); // Titel
define('OFFLINE', false); // Website online/offline (false/true)
/* Databasegegevens */
define('DBSERV', 'localhost'); // Server
define('DBUSER', 'user'); // Gebruikersnaam
define('DBPASS', 'pass'); // Wachtwoord
define('DBNAME', 'database'); // Database
require_once 'system.class.php';
$db = new Mysqli(DBSERV, DBUSER, DBPASS, DBNAME);
if (mysqli_connect_errno())
{
// Geen verbinding met de database
$error = true;
}
$sys = new System($db);
?>
// config.php
/* Errors weergeven */
ini_set('display_errors', false); // true/false
error_reporting(E_ALL);
/* Sessie starten */
session_start();
/* Instellingen */
$error = false;
define('TITLE', 'Hier een titel'); // Titel
define('OFFLINE', false); // Website online/offline (false/true)
/* Databasegegevens */
define('DBSERV', 'localhost'); // Server
define('DBUSER', 'user'); // Gebruikersnaam
define('DBPASS', 'pass'); // Wachtwoord
define('DBNAME', 'database'); // Database
require_once 'system.class.php';
$db = new Mysqli(DBSERV, DBUSER, DBPASS, DBNAME);
if (mysqli_connect_errno())
{
// Geen verbinding met de database
$error = true;
}
$sys = new System($db);
?>
Mocht je dit naar oo code om willen zetten, volg dan dit stappenplan:
1. Welke fysieke object zijn er? (pen, boek, user, ect.)
2. Welke taken/verantwoordelijkheden zijn er allemaal? (database coomunicztie, user opslaan, ...)
3. Maak nu een uml class diagram waarbij elke taak en elk fysiek object een class heeft. Lees in over design patterns en maak me applicatie architecture
4. Ga wat je hebt opgeschreven uittypen in code
Dan weet ik iig dat het niet fout is :P
Wil op een gegeven moment wel naar OOP idd, maar heb nog niet echt een goede tutorial gevonden die het wat verder uitlegt. Weet jij er misschien één?
http://wouterj.github.io/2012/05/oo/nadenken-in-objecten/ en http://wouterj.github.io/2012/06/oo/oo-de-onbekende-kant/ ?
Ik wil natuurlijk geen reclame maken, maar misschien haha, thanks! Ik ga ze eens doorlezen.