[CHECK] inlogsysteem voor scriptlib
Als het goed gekeurd is zet ik het in het scriptlib.
info:
- Niet oop
- Gebruik van phpmailer
- eerste deel (ik ben nog bezig aan de uitbreiding)
Check van het eerste deel:
Update
1 tabel van de db:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE IF NOT EXISTS `leden` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`voornaam` varchar(32) DEFAULT NULL,
`achternaam` varchar(32) DEFAULT NULL,
`email` varchar(30) DEFAULT NULL,
`wachtwoord` varchar(250) NOT NULL,
`ip` varchar(20) NOT NULL,
`activatiecode` varchar(10) NOT NULL,
`datum_registratie` datetime NOT NULL,
`activatie` int(11) NOT NULL,
`functie` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
`id` int(4) NOT NULL AUTO_INCREMENT,
`voornaam` varchar(32) DEFAULT NULL,
`achternaam` varchar(32) DEFAULT NULL,
`email` varchar(30) DEFAULT NULL,
`wachtwoord` varchar(250) NOT NULL,
`ip` varchar(20) NOT NULL,
`activatiecode` varchar(10) NOT NULL,
`datum_registratie` datetime NOT NULL,
`activatie` int(11) NOT NULL,
`functie` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
config.php
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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
98
99
100
<?php
###############################################
# #
# --- SILYON - CONFIG --- #
# #
# Author: Jasper De Smet #
# Email: [email protected] #
# Website: www.jasperdesmet.be #
# Last edited: 20 November 2010 #
# Version: 3.0 #
# #
###############################################
# Algemene info
$naam_site = 'inlogstysteem php-hulp'; // titel van site
$activatiecodelengte = 10; // lengte van de activatiecode
# DB connectie - gegevens
$mysql['host'] = "localhost"; // host
$mysql['gebruikersnaam'] = ""; // gebruikersnaam
$mysql['wachtwoord'] = ""; // wachtwoord
$mysql['database'] = ""; // database
# errors weergeven - SQL
define('DEBUG_MODE',true); // true == aan, false == uit
# errors weergeven - SQL - functie: error
function showSQLError($sql,$error)
{
echo '<pre>Error: '.$error.'<br />'.$sql.'</pre>';
}
# DB connectie - verbinding
if((mysql_connect($mysql['host'],$mysql['gebruikersnaam'],$mysql['wachtwoord'])) === false )
{
echo 'Kon geen contact maken met de database! Neem aub. Contact op met de webmaster!';
}
else
{
if((mysql_select_db($mysql['database'])) === false)
{
echo 'Kon de database niet selecteren! Neem aub. Contact op met de webmaster!';
}
}
# DB connectie - Zet tijd naar nl
$sql_set_time = "SET lc_time_names = 'nl_NL'";
# Functies
/*
**CHECK Mail functie gaat eruit
*/
# Functies - check mail
function checkemail($email)
{
// Kijk of er een @ in zit, zo nee false
if(!stristr($email, '@'))
{
return false;
}
$email_split = explode("@", $email);
// Er mag slecht één @ inzitten dus het array moet 2 records tellen
if(count($email_split) != 2)
{
return false;
}
$email_user = $email_split[0];
$email_host = $email_split[1];
// Kijk of er MX-servers zijn, zo nee false
if(!getmxrr($email_host, $var))
{
return false;
}
// Kijk of het usergedeelte okee is, zo nee false
if(!preg_match("/^[0-9a-z]([-_.~]?[0-9a-z])*$/", $email_user))
{
return false;
}
return true;
}
/*
** EINDE MAIL FUNCTIE
** - - - - - - - - -
*/
# Functies - activatiecode
function activatiecode($lengte)
{
$activatie = "";
mt_srand ((double) microtime() * 1000000);
while (strlen($activatie) < $lengte)
{
$kiezen = chr(mt_rand (0,255));
if (eregi("^[a-zA-Z0-9]$", $kiezen)) $activatie = $activatie.$kiezen;
}
return ($activatie);
}
?>
###############################################
# #
# --- SILYON - CONFIG --- #
# #
# Author: Jasper De Smet #
# Email: [email protected] #
# Website: www.jasperdesmet.be #
# Last edited: 20 November 2010 #
# Version: 3.0 #
# #
###############################################
# Algemene info
$naam_site = 'inlogstysteem php-hulp'; // titel van site
$activatiecodelengte = 10; // lengte van de activatiecode
# DB connectie - gegevens
$mysql['host'] = "localhost"; // host
$mysql['gebruikersnaam'] = ""; // gebruikersnaam
$mysql['wachtwoord'] = ""; // wachtwoord
$mysql['database'] = ""; // database
# errors weergeven - SQL
define('DEBUG_MODE',true); // true == aan, false == uit
# errors weergeven - SQL - functie: error
function showSQLError($sql,$error)
{
echo '<pre>Error: '.$error.'<br />'.$sql.'</pre>';
}
# DB connectie - verbinding
if((mysql_connect($mysql['host'],$mysql['gebruikersnaam'],$mysql['wachtwoord'])) === false )
{
echo 'Kon geen contact maken met de database! Neem aub. Contact op met de webmaster!';
}
else
{
if((mysql_select_db($mysql['database'])) === false)
{
echo 'Kon de database niet selecteren! Neem aub. Contact op met de webmaster!';
}
}
# DB connectie - Zet tijd naar nl
$sql_set_time = "SET lc_time_names = 'nl_NL'";
# Functies
/*
**CHECK Mail functie gaat eruit
*/
# Functies - check mail
function checkemail($email)
{
// Kijk of er een @ in zit, zo nee false
if(!stristr($email, '@'))
{
return false;
}
$email_split = explode("@", $email);
// Er mag slecht één @ inzitten dus het array moet 2 records tellen
if(count($email_split) != 2)
{
return false;
}
$email_user = $email_split[0];
$email_host = $email_split[1];
// Kijk of er MX-servers zijn, zo nee false
if(!getmxrr($email_host, $var))
{
return false;
}
// Kijk of het usergedeelte okee is, zo nee false
if(!preg_match("/^[0-9a-z]([-_.~]?[0-9a-z])*$/", $email_user))
{
return false;
}
return true;
}
/*
** EINDE MAIL FUNCTIE
** - - - - - - - - -
*/
# Functies - activatiecode
function activatiecode($lengte)
{
$activatie = "";
mt_srand ((double) microtime() * 1000000);
while (strlen($activatie) < $lengte)
{
$kiezen = chr(mt_rand (0,255));
if (eregi("^[a-zA-Z0-9]$", $kiezen)) $activatie = $activatie.$kiezen;
}
return ($activatie);
}
?>
inloggen.php
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
###############################################
# #
# -- INLOGGEN --- #
# #
# Author: Jasper De Smet #
# Email: [email protected] #
# Website: www.jasperdesmet.be #
# Last edited: #
# Version: 1.0 #
# #
# Voor php-hulp : vrij gebruik #
# #
###############################################
# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# include config
include 'config.php';
# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
# Verwerking van het inlog formulier
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# We maken het wachtwoord hiet al aan zodat we niet te lange rijen code hebben in onze query
$wachtwoord = sha1(mysql_real_escape_string($_POST['wachtwoord']));
# Dit is de query om te checken of het email adres en het wachtwoord bij elkaar horen en de gegevens uit de database halen (Query1)
$sql_get_leden = "SELECT id,
voornaam,
wachtwoord,
email,
functie
FROM leden
WHERE email='".mysql_real_escape_string($_POST['email'])."'
AND wachtwoord='".$wachtwoord."'
AND activatie ='1'
";
# Check Query1
if (($result_get_leden = mysql_query($sql_get_leden)) === false)
{
# als de query fout is -> foutafhandeling
$inloggen = 'Inloggen is (tijdelijk) niet mogelijk.';
# geef de error via de functie (de functie vind u in het config bestand)
if (DEBUG_MODE)
{
showSQLError($sql_get_leden,mysql_error());
}
}
else
{
# Query 1 is gelukt
# We tellen of er één (1) rij is met het wachtwoord EN het email adres
if(($tel = mysql_num_rows($result_get_leden)) == 1)
{
# Er is 1 rij!
# We sturen de gebruiker naar de beveiligde pagina
header('Location: ingelogged/index.php ');
# We fetchen de Query
$res = mysql_fetch_assoc($result_get_leden);
# We stellen de Sessions in om de gebuiker te indentificeren.
$_SESSION['voornaam'] = $res['voornaam'];
$_SESSION['leden_id'] = $res['id'];
}
else
{
# Er is geen (0) rij met het wachtwoord EN het email adres
$inloggen = 'verkeerde inlog gegevens';
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inloggen</title>
</head>
<body>
<form method="post" action="" name="form1">
Email:
<br />
<input type="text" name="email" id="email" />
<br />
<br />
Wachtwoord:
<br />
<input type="password" name="wachtwoord" id="wachtwoord" />
<br />
<br />
<input type="submit" name="submit" value="Login" class="button" >
</form>
<?php
if(isset($inloggen))
{
echo $inloggen;
}
?>
</body>
</html>
###############################################
# #
# -- INLOGGEN --- #
# #
# Author: Jasper De Smet #
# Email: [email protected] #
# Website: www.jasperdesmet.be #
# Last edited: #
# Version: 1.0 #
# #
# Voor php-hulp : vrij gebruik #
# #
###############################################
# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# include config
include 'config.php';
# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
# Verwerking van het inlog formulier
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# We maken het wachtwoord hiet al aan zodat we niet te lange rijen code hebben in onze query
$wachtwoord = sha1(mysql_real_escape_string($_POST['wachtwoord']));
# Dit is de query om te checken of het email adres en het wachtwoord bij elkaar horen en de gegevens uit de database halen (Query1)
$sql_get_leden = "SELECT id,
voornaam,
wachtwoord,
email,
functie
FROM leden
WHERE email='".mysql_real_escape_string($_POST['email'])."'
AND wachtwoord='".$wachtwoord."'
AND activatie ='1'
";
# Check Query1
if (($result_get_leden = mysql_query($sql_get_leden)) === false)
{
# als de query fout is -> foutafhandeling
$inloggen = 'Inloggen is (tijdelijk) niet mogelijk.';
# geef de error via de functie (de functie vind u in het config bestand)
if (DEBUG_MODE)
{
showSQLError($sql_get_leden,mysql_error());
}
}
else
{
# Query 1 is gelukt
# We tellen of er één (1) rij is met het wachtwoord EN het email adres
if(($tel = mysql_num_rows($result_get_leden)) == 1)
{
# Er is 1 rij!
# We sturen de gebruiker naar de beveiligde pagina
header('Location: ingelogged/index.php ');
# We fetchen de Query
$res = mysql_fetch_assoc($result_get_leden);
# We stellen de Sessions in om de gebuiker te indentificeren.
$_SESSION['voornaam'] = $res['voornaam'];
$_SESSION['leden_id'] = $res['id'];
}
else
{
# Er is geen (0) rij met het wachtwoord EN het email adres
$inloggen = 'verkeerde inlog gegevens';
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inloggen</title>
</head>
<body>
<form method="post" action="" name="form1">
Email:
<br />
<input type="text" name="email" id="email" />
<br />
<br />
Wachtwoord:
<br />
<input type="password" name="wachtwoord" id="wachtwoord" />
<br />
<br />
<input type="submit" name="submit" value="Login" class="button" >
</form>
<?php
if(isset($inloggen))
{
echo $inloggen;
}
?>
</body>
</html>
registreren.php
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
<?php
###############################################
# #
# -- REGISTREREN --- #
# #
# Author: Jasper De Smet #
# Email: [email protected] #
# Website: www.jasperdesmet.be #
# Last edited: #
# Version: 1.0 #
# #
# Voor php-hulp : vrij gebruik #
# #
###############################################
# include config
include 'config.php';
# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>
<body>
<?php
# Kijk of er gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Query om te checken of gebruikersnaam, email adres al bestaat.
$sql_get_leden = "SELECT id
FROM leden
WHERE email='".mysql_real_escape_string($_POST['email'])."'
";
# Query om te checken of ip adres al bestaat.
$sql_get_ip = "SELECT id
FROM leden
WHERE ip='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."'
";
# Check query's
if (($result_get_leden = mysql_query($sql_get_leden)) === false || ($result_get_ip = mysql_query($sql_get_ip)) === false)
{
// als de query fout is -> foutafhandeling
echo 'Registreren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (config bestand.)
if (DEBUG_MODE)
{
showSQLError($sql_get_leden,mysql_error());
showSQLError($sql_get_ip,mysql_error());
}
}
else
{
/*
Deze else moet het volledige registratie formulier omvatten
Anders kunnen er, als er een fout is met de query dubbele mail adressen gebruikt worden!
*/
# we maken een array voor de errors.
$error = array();
# Tel of er al een gebruiker bestaat met email
if(mysql_num_rows($result_get_leden) == 1)
{
$error[] = 'Er bestaat al een gebruiker met dit email adres';
}
# Tel of er al een gebruiker bestaat met ip
if(mysql_num_rows($result_get_ip) == 1)
{
$error[] = 'Er bestaat al een gebruiker met dit ip adres';
}
# wachtwoord ingevuld?
if(strlen($_POST['wachtwoord']) < 5)
{
$error[] = 'U hebt geen geldig wachtwoord ingevuld. Een wachtwoord moet minstens 5 tekens lang zijn.';
}
# wachtwoord gelijk aan wachtwoord2?
if($_POST['wachtwoord'] != $_POST['wachtwoord2'])
{
$error[] = 'U wachtwoorden zijn niet gelijk';
}
# voornaam ingevuld?
if(strlen($_POST['voornaam']) < 3)
{
$error[] = 'U hebt geen geldige voornaam ingevuld. Een voornaam moet minstens 3 tekens lang zijn';
}
# achternaam ingevuld?
if(strlen($_POST['achternaam']) < 3)
{
$error[] = 'U hebt geen geldige achternaam ingevuld. Een achternaam moet minstens 3 tekens lang zijn';
}
if(!checkemail($_POST['email']))
{
$error[] = 'U hebt geen geldig e-mailadres ingevuld.';
}
# Tel de fouten en weergeef ze indien nodig
$fouten = count($error); // aantal errors tellen
if($fouten != 0)
{
echo 'Uw account kon niet worden aangemaakt omwille van de volgende reden(en):';
echo '<ul>';
for($i = 0; $i < $fouten; $i++)
{
echo '<li>'.$error[$i].'</li>';
}
echo '</ul>';
}
else
{
# Alles voldoet aan de voorwaarden!
# Stuur een mail zodat ze hun acc kunnen activeren + gegevens in database
# genereer een activatiecode, de lenge is te vinden in de config
$code = activatiecode($activatiecodelengte);
# Query voor de gebruiker in de tabel te zetten
$sql_insert_leden = "INSERT INTO leden
VALUES ( '',
'".mysql_real_escape_string($_POST['voornaam'])."',
'".mysql_real_escape_string($_POST['achternaam'])."',
'".mysql_real_escape_string($_POST['email'])."',
'".mysql_real_escape_string(sha1($_POST['wachtwoord']))."',
'".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
'".$code."',
NOW(),
'0',
'1'
)
";
// Check query
if (($result_insert_leden = mysql_query($sql_insert_leden)) === false)
{
// als de query fout is -> foutafhandeling
echo 'registreren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_insert_leden,mysql_error());
}
}
else
{
# Stuur de mail
# gegevens voor het versturen van een mail: volg de instructies
require("class.phpmailer.php");
$mail = new PHPMailer();$mail = new PHPMailer();
$mail->IsSMTP(); // Laat PHPMailer gebruik maken van een smtp server.
$mail->Host = "mail.jasperdesmet.be"; // SMTP server van uw Hosting Partner
$mail->SMTPAuth = true;
$mail->Username = ''; // Een geldig emailadres wat aangemaakt is bij uw Hosting Partner
$mail->Password = ''; // Het wachtwoord wat bij het emailadres hoort
$mail->From=""; // email adres dat moet weergeven worden
$mail->FromName="Inlogsysteem php hulp"; // naam dat moet worden weergeven.
$mail->Sender=""; // Header voor return
$mail->AddAddress($_POST['email']); // Het emailadres waar naar toe hij verzonden moet worden
$mail->Subject = "Activatie op ".$naam_site."";
$mail->IsHTML(true); //Opmaak van de email is in HTML
# Html mail
$mail->Body =
"<h1>Activatie op ".$naam_site."</h1>
<p>Beste ".$_POST['voornaam']." ".$_POST['achternaam'].",<br/>
<br/>
Uw gegevens voor een activatie op <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/inloggen.php\">www.inlogsysteem-phphulp.be</a>:<br/><br/>
Gebruik uw email-adres en de activatie code voor de handmatige activatie van uw account,<br/>
als u dat heeft gedaan kan u inloggen met uw e-mail adres en passwoord.
<table border=\"1\">
<tr><td>Voornaam</td><td>".$_POST['voornaam']."</td>
<tr><td>Achternaam</td><td>".$_POST['achternaam']."</td>
<tr><td>Email</td><td>".$_POST['email']."</td>
<tr><td>activatiecode</td><td>".$code."</td>
<tr><td>Passwoord</td><td>".$_POST['wachtwoord']."</td>
</table><br/>
<a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/activatie.php?email=".$_POST['email']."&code=".$code."\">Klik hier voor een automatische activatie</a> </p>
<p>Met vriendelijke groeten<br/>
<br/>
<i>(Indien u deze mail niet gewenst heeft gelieve hem dan te negeren)</i></p>
";
# Als er geen html word ondersteund word dit weergeven
$mail->AltBody =
"<h1>Activatie op ".$naam_site."</h1>
<p>Beste ".$_POST['voornaam']." ".$_POST['achternaam'].",<br/>
<br/>
Uw gegevens voor een activatie op <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/inloggen.php\">www.inlogsysteem-phphulp.be</a>:<br/><br/>
Gebruik uw email-adres en de activatie code voor de handmatige activatie van uw account,<br/>
als u dat heeft gedaan kan u inloggen met uw e-mail adres en passwoord.
<table border=\"1\">
<tr><td>Voornaam</td><td>".$_POST['voornaam']."</td>
<tr><td>Achternaam</td><td>".$_POST['achternaam']."</td>
<tr><td>Email</td><td>".$_POST['email']."</td>
<tr><td>activatiecode</td><td>".$code."</td>
<tr><td>Passwoord</td><td>".$_POST['wachtwoord']."</td>
</table><br/>
<a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/activatie.php?email=".$_POST['email']."&code=".$code."\">Klik hier voor een automatische activatie</a> </p>
<p>Met vriendelijke groeten<br/>
<br/>
<i>(Indien u deze mail niet gewenst heeft gelieve hem dan te negeren)</i></p>
";
# De laatste stap is de mail verzenden en controleren of het is gelukt.
if($mail->Send())
{
# De mail is verzonden!
echo 'Het bericht is verzonden';
}
else
{
# Er ging iets mis
echo 'er ging iets mis met het verzenden van het bericht neem contact op met de website beheerder.';
}
}
}
}
}
?>
<p>
<form method="post" action="" name="">
Voornaam:<br/>
<input type="text" name="voornaam" id="voornaam" value="<?php echo $_POST['voornaam']; ?>" />
<br/>
<br/>
Achternaam:<br/>
<input type="text" name="achternaam" id="achternaam" value="<?php echo $_POST['achternaam']; ?>" />
<br/>
<br/>
Wachtwoord:
<br/>
<input type="password" name="wachtwoord" id="wachtwoord" />
<br/>
<br/>
Wachtwoord Controle: <br/>
<input type="password" name="wachtwoord2" id="wachtwoord2" />
<br/>
<br/>
E-mail:<br/>
<input type="text" name="email" id="email" value="<?php echo $_POST['email']; ?>" />
<br />
<br/>
<input type="submit" name="submit" value="registreer" class="button" >
</form>
</p>
</body>
</html>
###############################################
# #
# -- REGISTREREN --- #
# #
# Author: Jasper De Smet #
# Email: [email protected] #
# Website: www.jasperdesmet.be #
# Last edited: #
# Version: 1.0 #
# #
# Voor php-hulp : vrij gebruik #
# #
###############################################
# include config
include 'config.php';
# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>
<body>
<?php
# Kijk of er gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Query om te checken of gebruikersnaam, email adres al bestaat.
$sql_get_leden = "SELECT id
FROM leden
WHERE email='".mysql_real_escape_string($_POST['email'])."'
";
# Query om te checken of ip adres al bestaat.
$sql_get_ip = "SELECT id
FROM leden
WHERE ip='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."'
";
# Check query's
if (($result_get_leden = mysql_query($sql_get_leden)) === false || ($result_get_ip = mysql_query($sql_get_ip)) === false)
{
// als de query fout is -> foutafhandeling
echo 'Registreren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (config bestand.)
if (DEBUG_MODE)
{
showSQLError($sql_get_leden,mysql_error());
showSQLError($sql_get_ip,mysql_error());
}
}
else
{
/*
Deze else moet het volledige registratie formulier omvatten
Anders kunnen er, als er een fout is met de query dubbele mail adressen gebruikt worden!
*/
# we maken een array voor de errors.
$error = array();
# Tel of er al een gebruiker bestaat met email
if(mysql_num_rows($result_get_leden) == 1)
{
$error[] = 'Er bestaat al een gebruiker met dit email adres';
}
# Tel of er al een gebruiker bestaat met ip
if(mysql_num_rows($result_get_ip) == 1)
{
$error[] = 'Er bestaat al een gebruiker met dit ip adres';
}
# wachtwoord ingevuld?
if(strlen($_POST['wachtwoord']) < 5)
{
$error[] = 'U hebt geen geldig wachtwoord ingevuld. Een wachtwoord moet minstens 5 tekens lang zijn.';
}
# wachtwoord gelijk aan wachtwoord2?
if($_POST['wachtwoord'] != $_POST['wachtwoord2'])
{
$error[] = 'U wachtwoorden zijn niet gelijk';
}
# voornaam ingevuld?
if(strlen($_POST['voornaam']) < 3)
{
$error[] = 'U hebt geen geldige voornaam ingevuld. Een voornaam moet minstens 3 tekens lang zijn';
}
# achternaam ingevuld?
if(strlen($_POST['achternaam']) < 3)
{
$error[] = 'U hebt geen geldige achternaam ingevuld. Een achternaam moet minstens 3 tekens lang zijn';
}
if(!checkemail($_POST['email']))
{
$error[] = 'U hebt geen geldig e-mailadres ingevuld.';
}
# Tel de fouten en weergeef ze indien nodig
$fouten = count($error); // aantal errors tellen
if($fouten != 0)
{
echo 'Uw account kon niet worden aangemaakt omwille van de volgende reden(en):';
echo '<ul>';
for($i = 0; $i < $fouten; $i++)
{
echo '<li>'.$error[$i].'</li>';
}
echo '</ul>';
}
else
{
# Alles voldoet aan de voorwaarden!
# Stuur een mail zodat ze hun acc kunnen activeren + gegevens in database
# genereer een activatiecode, de lenge is te vinden in de config
$code = activatiecode($activatiecodelengte);
# Query voor de gebruiker in de tabel te zetten
$sql_insert_leden = "INSERT INTO leden
VALUES ( '',
'".mysql_real_escape_string($_POST['voornaam'])."',
'".mysql_real_escape_string($_POST['achternaam'])."',
'".mysql_real_escape_string($_POST['email'])."',
'".mysql_real_escape_string(sha1($_POST['wachtwoord']))."',
'".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
'".$code."',
NOW(),
'0',
'1'
)
";
// Check query
if (($result_insert_leden = mysql_query($sql_insert_leden)) === false)
{
// als de query fout is -> foutafhandeling
echo 'registreren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_insert_leden,mysql_error());
}
}
else
{
# Stuur de mail
# gegevens voor het versturen van een mail: volg de instructies
require("class.phpmailer.php");
$mail = new PHPMailer();$mail = new PHPMailer();
$mail->IsSMTP(); // Laat PHPMailer gebruik maken van een smtp server.
$mail->Host = "mail.jasperdesmet.be"; // SMTP server van uw Hosting Partner
$mail->SMTPAuth = true;
$mail->Username = ''; // Een geldig emailadres wat aangemaakt is bij uw Hosting Partner
$mail->Password = ''; // Het wachtwoord wat bij het emailadres hoort
$mail->From=""; // email adres dat moet weergeven worden
$mail->FromName="Inlogsysteem php hulp"; // naam dat moet worden weergeven.
$mail->Sender=""; // Header voor return
$mail->AddAddress($_POST['email']); // Het emailadres waar naar toe hij verzonden moet worden
$mail->Subject = "Activatie op ".$naam_site."";
$mail->IsHTML(true); //Opmaak van de email is in HTML
# Html mail
$mail->Body =
"<h1>Activatie op ".$naam_site."</h1>
<p>Beste ".$_POST['voornaam']." ".$_POST['achternaam'].",<br/>
<br/>
Uw gegevens voor een activatie op <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/inloggen.php\">www.inlogsysteem-phphulp.be</a>:<br/><br/>
Gebruik uw email-adres en de activatie code voor de handmatige activatie van uw account,<br/>
als u dat heeft gedaan kan u inloggen met uw e-mail adres en passwoord.
<table border=\"1\">
<tr><td>Voornaam</td><td>".$_POST['voornaam']."</td>
<tr><td>Achternaam</td><td>".$_POST['achternaam']."</td>
<tr><td>Email</td><td>".$_POST['email']."</td>
<tr><td>activatiecode</td><td>".$code."</td>
<tr><td>Passwoord</td><td>".$_POST['wachtwoord']."</td>
</table><br/>
<a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/activatie.php?email=".$_POST['email']."&code=".$code."\">Klik hier voor een automatische activatie</a> </p>
<p>Met vriendelijke groeten<br/>
<br/>
<i>(Indien u deze mail niet gewenst heeft gelieve hem dan te negeren)</i></p>
";
# Als er geen html word ondersteund word dit weergeven
$mail->AltBody =
"<h1>Activatie op ".$naam_site."</h1>
<p>Beste ".$_POST['voornaam']." ".$_POST['achternaam'].",<br/>
<br/>
Uw gegevens voor een activatie op <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/inloggen.php\">www.inlogsysteem-phphulp.be</a>:<br/><br/>
Gebruik uw email-adres en de activatie code voor de handmatige activatie van uw account,<br/>
als u dat heeft gedaan kan u inloggen met uw e-mail adres en passwoord.
<table border=\"1\">
<tr><td>Voornaam</td><td>".$_POST['voornaam']."</td>
<tr><td>Achternaam</td><td>".$_POST['achternaam']."</td>
<tr><td>Email</td><td>".$_POST['email']."</td>
<tr><td>activatiecode</td><td>".$code."</td>
<tr><td>Passwoord</td><td>".$_POST['wachtwoord']."</td>
</table><br/>
<a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/activatie.php?email=".$_POST['email']."&code=".$code."\">Klik hier voor een automatische activatie</a> </p>
<p>Met vriendelijke groeten<br/>
<br/>
<i>(Indien u deze mail niet gewenst heeft gelieve hem dan te negeren)</i></p>
";
# De laatste stap is de mail verzenden en controleren of het is gelukt.
if($mail->Send())
{
# De mail is verzonden!
echo 'Het bericht is verzonden';
}
else
{
# Er ging iets mis
echo 'er ging iets mis met het verzenden van het bericht neem contact op met de website beheerder.';
}
}
}
}
}
?>
<p>
<form method="post" action="" name="">
Voornaam:<br/>
<input type="text" name="voornaam" id="voornaam" value="<?php echo $_POST['voornaam']; ?>" />
<br/>
<br/>
Achternaam:<br/>
<input type="text" name="achternaam" id="achternaam" value="<?php echo $_POST['achternaam']; ?>" />
<br/>
<br/>
Wachtwoord:
<br/>
<input type="password" name="wachtwoord" id="wachtwoord" />
<br/>
<br/>
Wachtwoord Controle: <br/>
<input type="password" name="wachtwoord2" id="wachtwoord2" />
<br/>
<br/>
E-mail:<br/>
<input type="text" name="email" id="email" value="<?php echo $_POST['email']; ?>" />
<br />
<br/>
<input type="submit" name="submit" value="registreer" class="button" >
</form>
</p>
</body>
</html>
activatie.php
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?php
###############################################
# #
# -- ACTIVEREN --- #
# #
# Author: Jasper De Smet #
# Email: [email protected] #
# Website: www.jasperdesmet.be #
# Last edited: #
# Version: 1.0 #
# #
# Voor php-hulp : vrij gebruik #
# #
###############################################
# include config
include 'config.php';
# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>
<body>
<?php
# - - - - - - - - - - - - - - - - - - VOOR MENSEN DIE MET DE LINK REGISTREREN - - - - - - - - - - - - - - - - - -
if(isset($_GET['email']) && isset($_GET['code']))
{
# Query om te checken of email en code overeenkomen (tabel activatie).
$sql_get_leden = "SELECT id, email, wachtwoord, voornaam, achternaam, ip
FROM leden
WHERE email = '".mysql_real_escape_string($_GET['email'])."'
AND activatiecode = '".mysql_real_escape_string($_GET['code'])."'
AND activatie = '0'
";
// Check query
if (($result_get_leden = mysql_query($sql_get_leden)) === false)
{
// als de query fout is -> foutafhandeling
echo 'Activeren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_get_leden,mysql_error());
}
}
else
{
if(mysql_num_rows($result_get_leden) == 1)
{
# Activatie gevens zijn correct : voer een query uit!
$result_leden = mysql_fetch_assoc($result_get_leden);
# Querys om de gegevens uit de tabel activatie te verwijderen en in de tabel leden te zetten.
#Query 1 - INSERT INTO leden
$sql_update_leden = "UPDATE leden
SET activatie = '1'
WHERE id= '".$result_leden['id']."'
";
// Check query
if (($result_update_leden = mysql_query($sql_update_leden)) === false )
{
// als de query fout is -> foutafhandeling
echo 'registreren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_update_leden,mysql_error());
}
}
else
{
header('Location: inloggen.php');
}
}
else
{
# Gegevens zijn niet correct, geef foutmelding
echo 'Uw gegevens zijn niet correct';
}
}
}
# - - - - - - - - - - - - - - - - - - VOOR MENSEN DIE ZONDER DE LINK REGISTREREN - - - - - - - - - - - - - - - - - -
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Query om te checken of email en code overeenkomen (tabel activatie).
$sql_get_leden = "SELECT id, email, wachtwoord, voornaam, achternaam, ip
FROM leden
WHERE email = '".mysql_real_escape_string($_POST['email'])."'
AND activatiecode = '".mysql_real_escape_string($_POST['code'])."'
AND activatie = '0'
";
// Check query
if (($result_get_leden = mysql_query($sql_get_leden)) === false)
{
// als de query fout is -> foutafhandeling
echo 'Activeren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_get_leden,mysql_error());
}
}
else
{
if(mysql_num_rows($result_get_leden) == 1)
{
# Activatie gevens zijn correct : voer een query uit!
$result_leden = mysql_fetch_assoc($result_get_leden);
# Querys om de gegevens uit de tabel activatie te verwijderen en in de tabel leden te zetten.
#Query 1 - INSERT INTO leden
$sql_update_leden = "UPDATE leden
SET activatie = '1'
WHERE id= '".$result_leden['id']."'
";
// Check query
if (($result_update_leden = mysql_query($sql_update_leden)) === false )
{
// als de query fout is -> foutafhandeling
echo 'registreren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_update_leden,mysql_error());
}
}
else
{
header('Location: inloggen.php');
}
}
else
{
# Gegevens zijn niet correct, geef foutmelding
echo 'Uw gegevens zijn niet correct';
}
}
}
?>
<form name="form1" method="post" action="">
Voer de activatiecode en je gebruikersnaam die je in het e-mailbericht hebt ontvangen in. Heb je geen mail ontvangen? Klik dan <a href="send_again.php">hier</a>. <br/>
Email:<br/>
<input name="email" type="text" id="email" size="35"><br/>
Activatiecode:<br/>
<input name="code" type="text" id="code" size="<?php echo $activatiecodelengte;?>" maxlength="<?php echo $activatiecodelengte;?>"><br/>
<input type="submit" name="Submit" id="Submit" value="Activeren"><br/>
</form>
<body>
</html>
###############################################
# #
# -- ACTIVEREN --- #
# #
# Author: Jasper De Smet #
# Email: [email protected] #
# Website: www.jasperdesmet.be #
# Last edited: #
# Version: 1.0 #
# #
# Voor php-hulp : vrij gebruik #
# #
###############################################
# include config
include 'config.php';
# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>
<body>
<?php
# - - - - - - - - - - - - - - - - - - VOOR MENSEN DIE MET DE LINK REGISTREREN - - - - - - - - - - - - - - - - - -
if(isset($_GET['email']) && isset($_GET['code']))
{
# Query om te checken of email en code overeenkomen (tabel activatie).
$sql_get_leden = "SELECT id, email, wachtwoord, voornaam, achternaam, ip
FROM leden
WHERE email = '".mysql_real_escape_string($_GET['email'])."'
AND activatiecode = '".mysql_real_escape_string($_GET['code'])."'
AND activatie = '0'
";
// Check query
if (($result_get_leden = mysql_query($sql_get_leden)) === false)
{
// als de query fout is -> foutafhandeling
echo 'Activeren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_get_leden,mysql_error());
}
}
else
{
if(mysql_num_rows($result_get_leden) == 1)
{
# Activatie gevens zijn correct : voer een query uit!
$result_leden = mysql_fetch_assoc($result_get_leden);
# Querys om de gegevens uit de tabel activatie te verwijderen en in de tabel leden te zetten.
#Query 1 - INSERT INTO leden
$sql_update_leden = "UPDATE leden
SET activatie = '1'
WHERE id= '".$result_leden['id']."'
";
// Check query
if (($result_update_leden = mysql_query($sql_update_leden)) === false )
{
// als de query fout is -> foutafhandeling
echo 'registreren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_update_leden,mysql_error());
}
}
else
{
header('Location: inloggen.php');
}
}
else
{
# Gegevens zijn niet correct, geef foutmelding
echo 'Uw gegevens zijn niet correct';
}
}
}
# - - - - - - - - - - - - - - - - - - VOOR MENSEN DIE ZONDER DE LINK REGISTREREN - - - - - - - - - - - - - - - - - -
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
# Query om te checken of email en code overeenkomen (tabel activatie).
$sql_get_leden = "SELECT id, email, wachtwoord, voornaam, achternaam, ip
FROM leden
WHERE email = '".mysql_real_escape_string($_POST['email'])."'
AND activatiecode = '".mysql_real_escape_string($_POST['code'])."'
AND activatie = '0'
";
// Check query
if (($result_get_leden = mysql_query($sql_get_leden)) === false)
{
// als de query fout is -> foutafhandeling
echo 'Activeren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_get_leden,mysql_error());
}
}
else
{
if(mysql_num_rows($result_get_leden) == 1)
{
# Activatie gevens zijn correct : voer een query uit!
$result_leden = mysql_fetch_assoc($result_get_leden);
# Querys om de gegevens uit de tabel activatie te verwijderen en in de tabel leden te zetten.
#Query 1 - INSERT INTO leden
$sql_update_leden = "UPDATE leden
SET activatie = '1'
WHERE id= '".$result_leden['id']."'
";
// Check query
if (($result_update_leden = mysql_query($sql_update_leden)) === false )
{
// als de query fout is -> foutafhandeling
echo 'registreren is (tijdelijk) niet mogelijk.';
// geef de error via de functie (bovenaan script)
if (DEBUG_MODE)
{
showSQLError($sql_update_leden,mysql_error());
}
}
else
{
header('Location: inloggen.php');
}
}
else
{
# Gegevens zijn niet correct, geef foutmelding
echo 'Uw gegevens zijn niet correct';
}
}
}
?>
<form name="form1" method="post" action="">
Voer de activatiecode en je gebruikersnaam die je in het e-mailbericht hebt ontvangen in. Heb je geen mail ontvangen? Klik dan <a href="send_again.php">hier</a>. <br/>
Email:<br/>
<input name="email" type="text" id="email" size="35"><br/>
Activatiecode:<br/>
<input name="code" type="text" id="code" size="<?php echo $activatiecodelengte;?>" maxlength="<?php echo $activatiecodelengte;?>"><br/>
<input type="submit" name="Submit" id="Submit" value="Activeren"><br/>
</form>
<body>
</html>
Update log:
de meeste fouten moeten er nu wel uit zijn?
- eregi is noh niet aangepast!
Na eventuele aanpassingen en een goedkeuring van de harde kern van php hulp (ik kijk naar karl, santhe, niels, jelmer, kris peeters,..)
Zal dit in het scriptlib komen. (dit is deel 1, deel 2 volgt)
owja nog vergeten: voorbeeld via pm omdat ik anders weer in google sta. (voorbeeld staat op mijn domein)
Gewijzigd op 04/01/2011 17:01:56 door Jasper DS
Waarom zet je dan bij activatie geen foreign key op het id en voer je een join uit bij je registratiescript.
Dan kan je die 4 queries vervangen door 1...
verder staat er bij Activatie.php 2 maal onder elkaar session_start()
En ik kan een spatie ingeven als naam geloof ik, als ik het zo bekijk.
Check je naam etc ook met strlen()
eregi() is oud en depricated
Ziet er op het eerste oog wel goed uit.
Een paar dingen:
- Kan ook in 1 tabel
- Bij inloggen heeft $inloggen een foute, want onduidelijke, naam, net als $sql_get_leden_a
- display_errors kan van DEBUG_MODE afhangen
- Verplaats meer zaken naar het configuratiebestand, zodat aanpassen makkelijker kan.
- Nooit fourmeldingen boven de HTML echoën
- Mag wel wat meer abstractie, denk aan PDO, evt templating en meer gebruik van functies
- getmxrr() mag eruit. Je hebt al een goede controle dmv de activatie.
- Geen tabellen voor forms gebruiken
Een OOP had het zo veel makkelijker en mooier gemaakt dit te implementeren in een website.
Mocht je ooit nog daartoe komen, denk aan classes als:
User (naw, geactiveerd, id, setNaam(), opslaan())
Autorisatie/Inloggen (isIngelogd(), login($uname, $pw), getUser(), registreer(User $user)) - Deze kan je nog opsplitsen, maar dat hoeft niet
Mailer abstractie (__construct($config), sendMail($email))
evt Sessie abstractie, niet direct nodig
Gewijzigd op 04/01/2011 11:27:35 door Pim -
Tikkes C op 04/01/2011 11:12:16:
hmm...ziet er goed uit maar je werkt hier met 2 tabellen (activatie en leden).
Waarom zet je dan bij activatie geen foreign key op het id en voer je een join uit bij je registratiescript.
Dan kan je die 4 queries vervangen door 1...
verder staat er bij Activatie.php 2 maal onder elkaar session_start()
En ik kan een spatie ingeven als naam geloof ik, als ik het zo bekijk.
Check je naam etc ook met strlen()
Waarom zet je dan bij activatie geen foreign key op het id en voer je een join uit bij je registratiescript.
Dan kan je die 4 queries vervangen door 1...
verder staat er bij Activatie.php 2 maal onder elkaar session_start()
En ik kan een spatie ingeven als naam geloof ik, als ik het zo bekijk.
Check je naam etc ook met strlen()
Ik zal dat aanpassen.
- Aar - op 04/01/2011 11:15:45:
eregi() is oud en depricated
Ik zal dat aanpassen.
Pim - op 04/01/2011 11:22:57:
Mag ik ook commentaar geven? ;)
Ja natuurlijk ;-)
Pim - op 04/01/2011 11:22:57:
Ziet er op het eerste oog wel goed uit.
Een paar dingen:
- Kan ook in 1 tabel
Een paar dingen:
- Kan ook in 1 tabel
Dat zou ik persoonlijk niet doen. Nu heb je een mooi overzicht.
Pim - op 04/01/2011 11:22:57:
- Bij inloggen heeft $inloggen een foute, want onduidelijke, naam, net als $sql_get_leden_a
Dat zal ik aanpassen.
Pim - op 04/01/2011 11:22:57:
- display_errors kan van DEBUG_MODE afhangen
- Verplaats meer zaken naar het configuratiebestand, zodat aanpassen makkelijker kan.
- Verplaats meer zaken naar het configuratiebestand, zodat aanpassen makkelijker kan.
ik zal zien wat ik nog kan verplaatsen.
Pim - op 04/01/2011 11:22:57:
- Nooit fourmeldingen boven de HTML echoën
helemaal gelijk, dat krijgt prioriteit.
Pim - op 04/01/2011 11:22:57:
- Mag wel wat meer abstractie, denk aan PDO, evt templating en meer gebruik van functies
dat zal er niet inzitten vrees ik.
Pim - op 04/01/2011 11:22:57:
- getmxrr() mag eruit. Je hebt al een goede controle dmv de activatie.
prima
Pim - op 04/01/2011 11:22:57:
- Geen tabellen voor forms gebruiken
Komt in orde.
Pim - op 04/01/2011 11:22:57:
Een OOP had het zo veel makkelijker en mooier gemaakt dit te implementeren in een website.
Mocht je ooit nog daartoe komen, denk aan classes als:
User (naw, geactiveerd, id, setNaam(), opslaan())
Autorisatie/Inloggen (isIngelogd(), login($uname, $pw), getUser(), registreer(User $user)) - Deze kan je nog opsplitsen, maar dat hoeft niet
Mailer abstractie (__construct($config), sendMail($email))
evt Sessie abstractie, niet direct nodig
Mocht je ooit nog daartoe komen, denk aan classes als:
User (naw, geactiveerd, id, setNaam(), opslaan())
Autorisatie/Inloggen (isIngelogd(), login($uname, $pw), getUser(), registreer(User $user)) - Deze kan je nog opsplitsen, maar dat hoeft niet
Mailer abstractie (__construct($config), sendMail($email))
evt Sessie abstractie, niet direct nodig
Sorry dat zie ik niet zitten ;)
Gewijzigd op 04/01/2011 11:38:03 door Jasper DS
Waarom geen tabellen voor forms dan?
Gewijzigd op 04/01/2011 11:41:18 door - Mark -
Tikkes C op 04/01/2011 11:37:56:
ik zou het in 2 tabellen houden maar dan de dingen die je 2 keer erin hebt staan weg doen en oplossen met joins in je queries.
Waarom geen tabellen voor forms dan?
Waarom geen tabellen voor forms dan?
tabellen niet gebruiken voor opmaak, maar leden komen eerst in de activatie tabel en vanaf ze geactiveerd hebben in de leden tabel, zo kan je leden die niet geactiveerd zijn mooi splitsen van wel geactiveerde leden. Je zou het ook met een extra kolom kunnen doen en eren where in de query maar dan lijkt mijn oplossing makkelijker.
edit: de volledige mail check eruit?
In welk bestand echo ik boven de html?
Gewijzigd op 04/01/2011 11:43:14 door Jasper DS
Activatie met code en id als veld en dan een foreign key bij user die null is als de gebruiker geactiveerd is, is natuurlijk netter, maar je kan ook gewoon het code veld bij de user invullen of null laten...
Wat je nu hebt is echt geen goed datamodel...
En waarom niet meer abstractie? Bang dat dat niet lukt?
Maar bij geactiveerde leden heb je dan altijd 1 nutteloze kolom, de activatie-key?
dat is in ieder geval beter dan een nutteloze tabel.
Ok, zoals jullie vroegen 1 tabel.
die ziet er nu zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--
-- Tabelstructuur voor tabel `leden`
--
CREATE TABLE IF NOT EXISTS `leden` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`voornaam` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`achternaam` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`geslacht` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`email` varchar(64) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`wachtwoord` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`functie` varchar(20) NOT NULL,
`ip` varchar(25) NOT NULL,
`premium` int(11) NOT NULL,
`code` char(10) NOT NULL,
`datum` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
-- Tabelstructuur voor tabel `leden`
--
CREATE TABLE IF NOT EXISTS `leden` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`voornaam` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`achternaam` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`geslacht` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`email` varchar(64) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`wachtwoord` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
`functie` varchar(20) NOT NULL,
`ip` varchar(25) NOT NULL,
`premium` int(11) NOT NULL,
`code` char(10) NOT NULL,
`datum` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
Als dit goed is zal ik dat even aanpassen.
Gewijzigd op 04/01/2011 12:07:39 door Jasper DS
met 1 extra kolom hoef je een heel tabel niet te gebruiken, en je wilt toch alle leden in 1 tabel hebben. niet geactiveerde leden zijn ook leden?
Dus is het goed dat ik alles aanpas aan de tabel van mijn vorige post?
Tikkes C op 04/01/2011 12:51:36:
Waarom??ik zou activatie in een andere tabel zetten sowieso
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
leden:
- id
- username
- password
leden_attributen
- id
- leden_id
- attr_naam
- attr_waarde
- id
- username
- password
leden_attributen
- id
- leden_id
- attr_naam
- attr_waarde
Alle attributen zoals e-mail, actief e.d. zet je dan in de leden_attributen tabel zodat je je tabel nooit meer hoeft te updaten als je bijvoorbeeld een extra profiel ding wilt toevoegen :-)
-id (Primary key)
-naam
-voornaam
-wachtwoord
-ip
[Activatie]
-id (Foreign key naar Leden.id)
-geactiveerd
[LedenInfo]
-id (Foreign key naar Leden.id)
-premium
-andere dingen die vaker veranderen
waarom? zie chris z'n post ;-)
Gewijzigd op 04/01/2011 12:59:34 door Tikkes C
Maar activatie is een attribuut, dus hoef je daar niet een aparte tabel voor te maken...
Moet je een Foreign key gebruiken? Ik kan het aanmaken maar voor wat dient dat?
zo kan je tabellen met elkaar linken...dit zorgt voor performantieverhoging in je database enzovoort...
Foreign key
Gewijzigd op 04/01/2011 13:17:17 door Tikkes C