Beste tweakers,
Een tijdje geleden ben ik begonnen met het maken van een loginsysteem. Dit werkte goed. Nu heb ik het systeem herbouwd in een class met functies (OOP) en weet niet of dit wel de manier is. Ook weet ik niet of ik het echt goed gedaan heb. Dus zou ik graag feedback krijgen, als dat zou kunnen :3 De reden dat ik dit zo heb gedaan, is dat ik er nog veel dingen aan toe wil voegen, en dit het handig en overzichtelijk houdt. (hoop ik) Het systeem is nog niet helemaal af, maar wel operationeel. Ik weet ook niet of mijn SQL-variabel-namen wel handig zijn xd
Hopelijk kunnen jullie mij wat tips geven :3
Groeten, Kees
Een tijdje geleden ben ik begonnen met het maken van een loginsysteem. Dit werkte goed. Nu heb ik het systeem herbouwd in een class met functies (OOP) en weet niet of dit wel de manier is. Ook weet ik niet of ik het echt goed gedaan heb. Dus zou ik graag feedback krijgen, als dat zou kunnen :3 De reden dat ik dit zo heb gedaan, is dat ik er nog veel dingen aan toe wil voegen, en dit het handig en overzichtelijk houdt. (hoop ik) Het systeem is nog niet helemaal af, maar wel operationeel. Ik weet ook niet of mijn SQL-variabel-namen wel handig zijn xd
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
| <?php class LoginSaus { function __construct() { mysql_connect('localhost', '*username*', '*watchwoord*') or die('Unable to connect to database: ' . mysql_error()); mysql_select_db('josaus'); session_start(); } function __destruct() { mysql_close(); } function login($user, $password) { $sLogin = sprintf(' SELECT id, login, permission FROM users WHERE login = "%s" AND password_md5 = "%s"', mysql_real_escape_string(strtolower($user)), mysql_real_escape_string(md5($password))); $qLogin = mysql_query($sLogin); if(mysql_num_rows($qLogin) == 1) { $userDetails = mysql_fetch_assoc($qLogin); $_SESSION['uid'] = $userDetails['id']; $_SESSION['user'] = $userDetails['login']; $_SESSION['permission'] = $userDetails['permission']; return true; } else return false; } function register($user, $password, $email) { $regReturn; if($this->checkEmail($email)) { $sCheck = sprintf(' SELECT login, email FROM users WHERE login = "%s" OR name = "%s" OR email = "%s"', mysql_real_escape_string(strtolower($user)), mysql_real_escape_string($user), mysql_real_escape_string($email)); $qCheck = mysql_query($sCheck); if(mysql_num_rows($qCheck) >= 1) { $regReturn .= '!user||email'; } else { $sRegister = sprintf(' INSERT INTO users (name, login, password_md5, email, date) VALUES ("%s", "%s", "%s", "%s", %d)', mysql_real_escape_string($user), mysql_real_escape_string(strtolower($user)), mysql_real_escape_string(md5($password)), mysql_real_escape_string($email), time()); $qRegister = mysql_query($sRegister); if(mysql_num_rows($qRegister) == 0) { echo 'MySQL error: ' . mysql_error(); $regReturn .= '!mysql'; } else { $regReturn = true; } } } else { $regReturn .= '!email'; } return $regReturn; } function logout() { if(isset($_SESSION['uid'], $_SESSION['user'], $_SESSION['permission'])) { session_unset(); $loggedOut = true; } else { $loggedOut = false; } return $loggedOut; } function checkEmail($email) { $regex = '/^([*+!.&#$¦\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i'; $isValid = preg_match($regex, $email); if($isValid) { list( , $domain) = explode("@", $email); if (checkdnsrr($domain, "MX")) { return true; } else { return false; } } else return false; } } ?> |
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
| CREATE TABLE `users` ( `id` int(12) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, `login` varchar(32) NOT NULL, `password_md5` varchar(32) NOT NULL, `email` varchar(64) NOT NULL, `status` varchar(32) NOT NULL DEFAULT 'activation', `date` int(10) NOT NULL, `permission` int(4) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`login`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; |
Hopelijk kunnen jullie mij wat tips geven :3
Groeten, Kees
[ Voor 6% gewijzigd door Josaus op 17-10-2012 19:27 ]