Hulp met database maken
ALLEEN HULP BIJ DE VRAAG DIE IK STEL!
Ik probeer een database te koppelen aan mijn registratiesysteem en inlogsysteem.
Ik heb geprobeerd van deze website iets te leren http://phptuts.nl/view/41/5/ , maar ik kom er niet echt uit omdat ik toch niet alles kan vinden wat ik wil weten en wat ik niet snap.
Mijn vraag is dus, hoe verbeter ik dit:
sql query database
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
CREATE TABLE spelers (
id int(100000000) NOT NULL auto_increment,
Gebruikersnaam varchar (30) NOT NULL,
Stalnaam varchar (40) NOT NULL,
Wachtwoord varchar (35) NOT NULL,
Email varchar (250) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB
id int(100000000) NOT NULL auto_increment,
Gebruikersnaam varchar (30) NOT NULL,
Stalnaam varchar (40) NOT NULL,
Wachtwoord varchar (35) NOT NULL,
Email varchar (250) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB
en dit is het registratiescript:
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
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
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
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Hier komt alle behandeling van het formulier
// Mocht er een fout optreden, is het leuk dat de gebruiker niet alles opnieuw hoeft
// in te vullen. Daarom vullen we de array $post met de velden,
// uiteraard door htmlentities() gehaald (veiligheidsmaatregel).
// Wachtwoord moeten wel opnieuw ingevuld worden, nogmaals veiligheidsmaatsregel
$post = array(
'gebruikersnaam' => htmlentities($_POST['Gebruikersnaam']),
'email' => htmlentities($_POST['Email']));
// Verwerking
// Eerst enkele functies schrijven die de controle vergemakkelijken
function geregistreerd($zoek, $veld) {
// Ik plaats de query op meerdere lijnen voor de leesbaarheid
$qZoek = mysql_query("
SELECT COUNT(".$veld.")
FROM gebruikers
WHERE ".$veld." = '".mysql_real_escape_string($zoek)."'");
// Als de gebruikersnaam nog niet bestaat, geeft dit false, anders true
return (mysql_result($qZoek,0) == 0 ? false : true);
}
// De reguliere expressies voor de controle op e-mailadressen is door FangorN samengesteld :]
function is_email($in) {
list($local, $host) = explode('@', $in);
$pattern_local = '^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.'
. '([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$';
$pattern_host = '^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)'
. '[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$';
$match_local = eregi($pattern_local, $local);
$match_host = eregi($pattern_host, $host);
return ($match_local && $match_host ? true : false);
}
// Hier zullen we de fouten in opslaan
function fouten($fout){
if (!empty($fout))
{
$i = 0;
while ($i < count($fout)){
echo "<p><span class='fout'>".$fout[$i]."</span></p>";
$i++;}
}
}
if ($_SERVER['REQUEST_METHOD']=="POST")
{
$Gebruikersnaam = trim($_POST['Gebruikersnaam']);
if (strlen($Gebruikersnaam) < 3) {
$fout[] = 'Gebruikersnaam moet minimaal 3 karakters bevatten.';
}
if (strlen($Gebruikersnaam) >30) {
$fout[] = 'Gebruikersnaam moet maximaal 30 karakters bevatten.';
}
if (!get_magic_quotes_gpc()) {
$_POST[] = addslashes($_POST['Gebruikersnaam']);
}
$ControleerGebruiker = $_POST['Gebruikersnaam'];
$Controleer = mysql_query("SELECT gebruikersnaam FROM horselife WHERE gerbuikersnaam='$ControleerGebruiker'")or die (mysql_error());
$Controleer2 = mysql_num_rows($Controleer);
if ($Controleer2 != 0) {
$fout[] = "Sorry, de gebruikersnaam <strong>'.$_POST['Gebruikersnaam'].'</strong> is al in gebruik.";
}
if (!$fout ) {
$Gebruikersnaam = mysql_real_escape_string($Gebruikersnaam);
$Gebruikersnaam = strip_tags($Gebruikersnaam);
}
$Stalnaam = trim($_POST['Stalnaam']);
if (strlen($Stalnaam) <3) {
$fout[] = 'Stalnaam moet minimaal 3 karakters bevatten.';
}
if(strlen($Stalnaam) >40) {
$fout[] = 'Stalnaam moet maximaal 40 karakters bevatten.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Stalnaam']);
}
$ControleerStalnaam = $_POST['Stalnaam'];
$Controleer = mysql_query("SELECT stalnaam FROM horselife WHERE stalnaam='$ControleerStalnaam'")or die (mysql_error());
$Controleer2 = mysql_num_rows($Controleer);
if ($Controleer2 != 0) {
$fout[] = "Sorry, de stalnaam <strong>'.$_POST['Stalnaam'].'</strong> is al in gebruik.";
}
if (!$fout ) {
$Stalnaam = mysql_real_escape_string($Stalnaam);
$Stalnaam = strip_tags($Stalnaam);
}
$Naampaard = trim($_POST['Naampaard']);
if (strlen($Naampaard) <1) {
$fout[] = 'Naam paard moet minimaal 1 karakter bevatten.';
}
if(strlen($Naampaard) >35) {
$fout[] = 'Naam paard moet maximaal 35 karakters bevatten.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Naampaard']);
}
$ControleerNaampaard = $_POST['Naampaard'];
$Controleer = mysql_query("SELECT naampaard FROM horselife WHERE naampaard='$ControleerNaampaard'")or die (mysql_error());
if (!fout ) {
$Naampaard = mysql_real_escape_string($Naampaard);
$Naampaard = strip_tags($Naampaard);
}
$Ras = trim($_POST['Ras']);
if (strlen($Ras) <2) {
$fout[] = 'Ras moet minimaal 2 karakters bevatten.';
}
if(strlen($Ras) >40) {
$fout[] = 'Ras moet maximaal 40 karakters bevatten.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Ras']);
}
$ControleerRas = $_POST['Ras'];
$Controleer = mysql_query("SELECT ras FROM horselife WHERE ras='$ControleerRas'")or die (mysql_error());
if (!fout ) {
$Ras = mysql_real_escape_string($Ras);
$Ras = strip_tags($Ras);
}
$Geslacht = trim($_POST['Geslacht']);
if (strlen($Geslacht) <3) {
$fout[] = 'Geslacht moet minimaal 3 karakters bevatten.';
}
if(strlen($Geslacht) >7) {
$fout[] = 'Geslacht moet maximaal 7 karakters bevatten.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Geslacht']);
}
$ControleerGeslacht = $_POST['Geslacht'];
$Controleer = mysql_query("SELECT geslacht FROM horselife WHERE geslacht='$ControleerGeslacht'")or die (mysql_error());
if (!fout ) {
$Geslacht = mysql_real_escape_string($Geslacht);
$Geslacht = strip_tags($Geslacht);
}
$Wachtwoord = trim($_POST['Wachtwoord']);
if (strlen($Wachtwoord) <3) {
$fout [] = 'Wachtwoord moet minimaal 3 karakters bevatten.';
}
if (strlen($Wachtwoord) >35) {
$fout [] = 'Wachtwoord moet maximaal 35 karakters bevatten.';
}
$Wachtwoord herhalen = trim($_POST['Wachtwoord herhalen']);
if (strlen($Wachtwoord herhalen) <3) {
$fout [] = 'Wachtwoord moet minimaal 3 karakters bevatten.';
}
if (strlen($Wachtwoord herhalen) >35) {
$fout [] = 'Wachtwoord moet maximaal 35 karakters bevatten.';
}
if ($_POST['Wachtwoord'] != $_POST['Wachtwoord herhalen']) {
$fout[] = 'Wachtwoorden komen niet overeen.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Wachtwoord']);
}
$ControleerWachtwoord = $_POST['Wachtwoord'];
$Controleer = mysql_query("SELECT wachtwoord FROM horselife WHERE wachtwoord='$ControleerWachtwoord'")or die (mysql_error());
if (!fout ) {
$Wachtwoord = mysql_real_escape_string($Wachtwoord);
$Wachtwoord = strip_tags($Wachtwoord);
}
$Email = trim($_POST['Email']);
if(preg_match('/^[A-Za-z0-9\+._-]+@[A-Za-z0-9._-]+\.[A-Za-z]{2,6}$/', $emailadres)){
$fout [] = 'Emailadres is niet geldig, probeer het opnieuw.';
}
if (!get_magic_quotes_gpc()) {
$_POST[] = addslashes($_POST['Email']);
}
$ControleerEmail = $_POST['Email'];
$Controleer = mysql_query("SELECT email FROM horselife WHERE email='$ControleerEmail'")or die (mysql_error());
$Controleer2 = mysql_num_rows($Controleer);
if ($Controleer2 != 0) {
$fout[] = "Sorry, de email <strong>'.$_POST['Email'].'</strong> is al in gebruik.";
}
if (!$fout ) {
$Email = mysql_real_escape_string($Email);
$Email = strip_tags($Email);
}
$Uitvoeren = "INSERT INTO gebruikers (gebruikersnaam, stalnaam, naampaard, ras, geslacht, wachtwoord, email) VALUES ('$Gebruikersnaam', '$Stalnaam', '$Naampaard', '$Ras', '$Geslacht', '$Wachtwoord', '$Email')";
$Resultaat1 = mysql_query($Uitvoeren) or die('Er is een fout opgetreden: ' . mysql_error());
$Naar = "$Email";
$Onderwerp = "Je hebt met succes op Horselife.net84.net geregistreerd!";
$Emailveld = "Hallo $Gebruikersnaam, Welkom bij Horselife.net84.net en heel veel plezier met het spel! Hier zijn je gegevens: gebruikersnaam: $Gebruikersnaam, Stalnaam: $Stalnaam en wachtwoord: $Wachtwoord";
$ExtraHeaders = "Van: <[email protected]>";
$ExtraHeaders .= "Antwoorden: [email protected]";
if(mail($Naar, $Onderwerp, $Emailveld, $ExtraHeaders))
fouten($fout);
// Het formulier is gecontroleerd, nu kijken we of er fouten opgetreden zijn
if(count($fouten) > 0) {
?>
<span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span>
<ul>
<?php foreach($fouten as $fout) { ?>
<li><?=$fout?></li>
<?php } ?>
</ul>
<?php
} else {
// Er zijn geen fouten, voer registratie uit!
mysql_query("INSERT INTO gebruikers
(gebruikersnaam, stalnaam, naampaard, ras, geslacht, wachtwoord, email, datum)
VALUES
('".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".mysql_real_escape_string($_post['stalnaam'])."',
'".mysql_real_escape_string($_post['naampaard'])."',
'".mysql_real_escape_string($_POST['ras'])."',
'".mysql_real_escape_string($_post['geslacht'])."',
'".sha1($_POST['wachtwoord'])."',
'".mysql_real_escape_string($_POST['email'])."',
NOW()
)");
$gebruikers_id = mysql_insert_id();
// Een volledig willekeurige code van 40 tekens
$activatiecode = sha1(md5(microtime()*rand(1,10)));
mysql_query("INSERT INTO gebruikers_activaties
(gebruikers_id, sleutel)
VALUES
(".$gebruikers_id.", '".$activatiecode."'");
// Voor de regeleinden
define('EOL', "\n");
// Je kan deze mail uit uitbreiden, evt HTML mail,...
$mail = 'Bedankt voor je registratie, activeer hier je acount:'.EOL;
$mail .= 'http://www.horselife.net84.net/activeer.php?gebruiker='.$gebruikers_id.'&sleutel='.$activatiecode.EOL;
$mail .= 'Bedankt voor het registreren.';
$header = '"Horselife.net84.net Account" <[email protected]>';
if(mail($_POST['email'], 'Je account activeren', $mail, $header));
?> {
echo 'Er is een e-mail gestuurd met activatiedetails.'<?=$mail?>
<?php
// Formulier verbergen
$verberg_form = true;}
}
} else {
// Dit stuk wordt uitgevoerd als het formulier nog niet is verzonden.
// Het formulier is nog niet verzonden, dus is er ook geen $post array.
// we maken deze dus zelf aan met initiele waardes, om warnings te voorkomen.
$post = array(
'gebruikersnaam' => '',
'email' => '');
}
if(!isset($verberg_form)) {
?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
Gebruikersnaam:<br />
<input type="text" name="gebruikersnaam" value="<?=$post['Gebruikersnaam']?>" /><br />
Stalnaam:<br />
<input type="text" name="stalnaam" value="<?=$post['Stalnaam']?>" /><br />
Naam paard:<br />
<input type="text" neme="naampaard" value="<?=$post['Naampaard']?>" /><br />
Ras:<br />
<input type="text" neme="ras" value="<?=$post['Ras']?>" /><br />
Geslacht:<br />
<input type="text" neme="geslacht" value="<?=$post['Geslacht']?>" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
Wachtwoord herhalen:<br />
<input type="password" name="Wachtwoord herhalen" /><br />
E-mailadres:<br />
<input type="text" name="Email" value="<?=$post['email']?>" /><br />
<br />
<input type="submit" value="Registreer" />
</form>
<?php
}
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Hier komt alle behandeling van het formulier
// Mocht er een fout optreden, is het leuk dat de gebruiker niet alles opnieuw hoeft
// in te vullen. Daarom vullen we de array $post met de velden,
// uiteraard door htmlentities() gehaald (veiligheidsmaatregel).
// Wachtwoord moeten wel opnieuw ingevuld worden, nogmaals veiligheidsmaatsregel
$post = array(
'gebruikersnaam' => htmlentities($_POST['Gebruikersnaam']),
'email' => htmlentities($_POST['Email']));
// Verwerking
// Eerst enkele functies schrijven die de controle vergemakkelijken
function geregistreerd($zoek, $veld) {
// Ik plaats de query op meerdere lijnen voor de leesbaarheid
$qZoek = mysql_query("
SELECT COUNT(".$veld.")
FROM gebruikers
WHERE ".$veld." = '".mysql_real_escape_string($zoek)."'");
// Als de gebruikersnaam nog niet bestaat, geeft dit false, anders true
return (mysql_result($qZoek,0) == 0 ? false : true);
}
// De reguliere expressies voor de controle op e-mailadressen is door FangorN samengesteld :]
function is_email($in) {
list($local, $host) = explode('@', $in);
$pattern_local = '^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.'
. '([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$';
$pattern_host = '^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)'
. '[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$';
$match_local = eregi($pattern_local, $local);
$match_host = eregi($pattern_host, $host);
return ($match_local && $match_host ? true : false);
}
// Hier zullen we de fouten in opslaan
function fouten($fout){
if (!empty($fout))
{
$i = 0;
while ($i < count($fout)){
echo "<p><span class='fout'>".$fout[$i]."</span></p>";
$i++;}
}
}
if ($_SERVER['REQUEST_METHOD']=="POST")
{
$Gebruikersnaam = trim($_POST['Gebruikersnaam']);
if (strlen($Gebruikersnaam) < 3) {
$fout[] = 'Gebruikersnaam moet minimaal 3 karakters bevatten.';
}
if (strlen($Gebruikersnaam) >30) {
$fout[] = 'Gebruikersnaam moet maximaal 30 karakters bevatten.';
}
if (!get_magic_quotes_gpc()) {
$_POST[] = addslashes($_POST['Gebruikersnaam']);
}
$ControleerGebruiker = $_POST['Gebruikersnaam'];
$Controleer = mysql_query("SELECT gebruikersnaam FROM horselife WHERE gerbuikersnaam='$ControleerGebruiker'")or die (mysql_error());
$Controleer2 = mysql_num_rows($Controleer);
if ($Controleer2 != 0) {
$fout[] = "Sorry, de gebruikersnaam <strong>'.$_POST['Gebruikersnaam'].'</strong> is al in gebruik.";
}
if (!$fout ) {
$Gebruikersnaam = mysql_real_escape_string($Gebruikersnaam);
$Gebruikersnaam = strip_tags($Gebruikersnaam);
}
$Stalnaam = trim($_POST['Stalnaam']);
if (strlen($Stalnaam) <3) {
$fout[] = 'Stalnaam moet minimaal 3 karakters bevatten.';
}
if(strlen($Stalnaam) >40) {
$fout[] = 'Stalnaam moet maximaal 40 karakters bevatten.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Stalnaam']);
}
$ControleerStalnaam = $_POST['Stalnaam'];
$Controleer = mysql_query("SELECT stalnaam FROM horselife WHERE stalnaam='$ControleerStalnaam'")or die (mysql_error());
$Controleer2 = mysql_num_rows($Controleer);
if ($Controleer2 != 0) {
$fout[] = "Sorry, de stalnaam <strong>'.$_POST['Stalnaam'].'</strong> is al in gebruik.";
}
if (!$fout ) {
$Stalnaam = mysql_real_escape_string($Stalnaam);
$Stalnaam = strip_tags($Stalnaam);
}
$Naampaard = trim($_POST['Naampaard']);
if (strlen($Naampaard) <1) {
$fout[] = 'Naam paard moet minimaal 1 karakter bevatten.';
}
if(strlen($Naampaard) >35) {
$fout[] = 'Naam paard moet maximaal 35 karakters bevatten.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Naampaard']);
}
$ControleerNaampaard = $_POST['Naampaard'];
$Controleer = mysql_query("SELECT naampaard FROM horselife WHERE naampaard='$ControleerNaampaard'")or die (mysql_error());
if (!fout ) {
$Naampaard = mysql_real_escape_string($Naampaard);
$Naampaard = strip_tags($Naampaard);
}
$Ras = trim($_POST['Ras']);
if (strlen($Ras) <2) {
$fout[] = 'Ras moet minimaal 2 karakters bevatten.';
}
if(strlen($Ras) >40) {
$fout[] = 'Ras moet maximaal 40 karakters bevatten.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Ras']);
}
$ControleerRas = $_POST['Ras'];
$Controleer = mysql_query("SELECT ras FROM horselife WHERE ras='$ControleerRas'")or die (mysql_error());
if (!fout ) {
$Ras = mysql_real_escape_string($Ras);
$Ras = strip_tags($Ras);
}
$Geslacht = trim($_POST['Geslacht']);
if (strlen($Geslacht) <3) {
$fout[] = 'Geslacht moet minimaal 3 karakters bevatten.';
}
if(strlen($Geslacht) >7) {
$fout[] = 'Geslacht moet maximaal 7 karakters bevatten.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Geslacht']);
}
$ControleerGeslacht = $_POST['Geslacht'];
$Controleer = mysql_query("SELECT geslacht FROM horselife WHERE geslacht='$ControleerGeslacht'")or die (mysql_error());
if (!fout ) {
$Geslacht = mysql_real_escape_string($Geslacht);
$Geslacht = strip_tags($Geslacht);
}
$Wachtwoord = trim($_POST['Wachtwoord']);
if (strlen($Wachtwoord) <3) {
$fout [] = 'Wachtwoord moet minimaal 3 karakters bevatten.';
}
if (strlen($Wachtwoord) >35) {
$fout [] = 'Wachtwoord moet maximaal 35 karakters bevatten.';
}
$Wachtwoord herhalen = trim($_POST['Wachtwoord herhalen']);
if (strlen($Wachtwoord herhalen) <3) {
$fout [] = 'Wachtwoord moet minimaal 3 karakters bevatten.';
}
if (strlen($Wachtwoord herhalen) >35) {
$fout [] = 'Wachtwoord moet maximaal 35 karakters bevatten.';
}
if ($_POST['Wachtwoord'] != $_POST['Wachtwoord herhalen']) {
$fout[] = 'Wachtwoorden komen niet overeen.';
}
if(!get_magic_quotes_gpc()) {
$_POST[] addslashes($_POST['Wachtwoord']);
}
$ControleerWachtwoord = $_POST['Wachtwoord'];
$Controleer = mysql_query("SELECT wachtwoord FROM horselife WHERE wachtwoord='$ControleerWachtwoord'")or die (mysql_error());
if (!fout ) {
$Wachtwoord = mysql_real_escape_string($Wachtwoord);
$Wachtwoord = strip_tags($Wachtwoord);
}
$Email = trim($_POST['Email']);
if(preg_match('/^[A-Za-z0-9\+._-]+@[A-Za-z0-9._-]+\.[A-Za-z]{2,6}$/', $emailadres)){
$fout [] = 'Emailadres is niet geldig, probeer het opnieuw.';
}
if (!get_magic_quotes_gpc()) {
$_POST[] = addslashes($_POST['Email']);
}
$ControleerEmail = $_POST['Email'];
$Controleer = mysql_query("SELECT email FROM horselife WHERE email='$ControleerEmail'")or die (mysql_error());
$Controleer2 = mysql_num_rows($Controleer);
if ($Controleer2 != 0) {
$fout[] = "Sorry, de email <strong>'.$_POST['Email'].'</strong> is al in gebruik.";
}
if (!$fout ) {
$Email = mysql_real_escape_string($Email);
$Email = strip_tags($Email);
}
$Uitvoeren = "INSERT INTO gebruikers (gebruikersnaam, stalnaam, naampaard, ras, geslacht, wachtwoord, email) VALUES ('$Gebruikersnaam', '$Stalnaam', '$Naampaard', '$Ras', '$Geslacht', '$Wachtwoord', '$Email')";
$Resultaat1 = mysql_query($Uitvoeren) or die('Er is een fout opgetreden: ' . mysql_error());
$Naar = "$Email";
$Onderwerp = "Je hebt met succes op Horselife.net84.net geregistreerd!";
$Emailveld = "Hallo $Gebruikersnaam, Welkom bij Horselife.net84.net en heel veel plezier met het spel! Hier zijn je gegevens: gebruikersnaam: $Gebruikersnaam, Stalnaam: $Stalnaam en wachtwoord: $Wachtwoord";
$ExtraHeaders = "Van: <[email protected]>";
$ExtraHeaders .= "Antwoorden: [email protected]";
if(mail($Naar, $Onderwerp, $Emailveld, $ExtraHeaders))
fouten($fout);
// Het formulier is gecontroleerd, nu kijken we of er fouten opgetreden zijn
if(count($fouten) > 0) {
?>
<span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span>
<ul>
<?php foreach($fouten as $fout) { ?>
<li><?=$fout?></li>
<?php } ?>
</ul>
<?php
} else {
// Er zijn geen fouten, voer registratie uit!
mysql_query("INSERT INTO gebruikers
(gebruikersnaam, stalnaam, naampaard, ras, geslacht, wachtwoord, email, datum)
VALUES
('".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".mysql_real_escape_string($_post['stalnaam'])."',
'".mysql_real_escape_string($_post['naampaard'])."',
'".mysql_real_escape_string($_POST['ras'])."',
'".mysql_real_escape_string($_post['geslacht'])."',
'".sha1($_POST['wachtwoord'])."',
'".mysql_real_escape_string($_POST['email'])."',
NOW()
)");
$gebruikers_id = mysql_insert_id();
// Een volledig willekeurige code van 40 tekens
$activatiecode = sha1(md5(microtime()*rand(1,10)));
mysql_query("INSERT INTO gebruikers_activaties
(gebruikers_id, sleutel)
VALUES
(".$gebruikers_id.", '".$activatiecode."'");
// Voor de regeleinden
define('EOL', "\n");
// Je kan deze mail uit uitbreiden, evt HTML mail,...
$mail = 'Bedankt voor je registratie, activeer hier je acount:'.EOL;
$mail .= 'http://www.horselife.net84.net/activeer.php?gebruiker='.$gebruikers_id.'&sleutel='.$activatiecode.EOL;
$mail .= 'Bedankt voor het registreren.';
$header = '"Horselife.net84.net Account" <[email protected]>';
if(mail($_POST['email'], 'Je account activeren', $mail, $header));
?> {
echo 'Er is een e-mail gestuurd met activatiedetails.'<?=$mail?>
<?php
// Formulier verbergen
$verberg_form = true;}
}
} else {
// Dit stuk wordt uitgevoerd als het formulier nog niet is verzonden.
// Het formulier is nog niet verzonden, dus is er ook geen $post array.
// we maken deze dus zelf aan met initiele waardes, om warnings te voorkomen.
$post = array(
'gebruikersnaam' => '',
'email' => '');
}
if(!isset($verberg_form)) {
?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
Gebruikersnaam:<br />
<input type="text" name="gebruikersnaam" value="<?=$post['Gebruikersnaam']?>" /><br />
Stalnaam:<br />
<input type="text" name="stalnaam" value="<?=$post['Stalnaam']?>" /><br />
Naam paard:<br />
<input type="text" neme="naampaard" value="<?=$post['Naampaard']?>" /><br />
Ras:<br />
<input type="text" neme="ras" value="<?=$post['Ras']?>" /><br />
Geslacht:<br />
<input type="text" neme="geslacht" value="<?=$post['Geslacht']?>" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
Wachtwoord herhalen:<br />
<input type="password" name="Wachtwoord herhalen" /><br />
E-mailadres:<br />
<input type="text" name="Email" value="<?=$post['email']?>" /><br />
<br />
<input type="submit" value="Registreer" />
</form>
<?php
}
?>
dit het inlogsysteem:
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
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
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Dit is niet mijn gewoonte om queries op deze manier in te springen, maar om de layout
// van Sitemasters niet naar de knoppen te helpen doe ik dit even gek :)
$qLogin = mysql_query("SELECT id FROM horselife WHERE
gebruikersnaam = '".mysql_real_escape_string($_POST['Gebruikersnaam'])."' AND
stalnaam = '".mysql_real_escape_string($_POST['Stalnaam'])."' AND
wachtwoord = '".sha1($_POST['Wachtwoord'])."'");
// Met deze query selecteren we het gebruikers-id van de gebruikersnaam en controleren we of
// de account geactiveerd is in 1 keer. Als je deze niet snapt, lees hem dan 20 keer :)
// Je kan natuurlijk ook een tutorial over dit soort queries lezen, alhoewel
// ze poepsimpel zijn IMO.
// Deze query mag overigens geen resultaten opleveren om te mogen inloggen. Als deze
// wél een resultaat oplevert is de account nog niet geactiveerd (en bestaat de
// activatiedata dus nog).
$qActivatie = mysql_query("SELECT COUNT(id) FROM horselife WHERE
gebruikers = '".mysql_real_escape_string($_POST['Gebruikersnaam'])."' AND
id = horselife");
if(mysql_result($qActivatie,0) != 0) {
echo 'Het account is nog niet geactiveerd.';
} elseif(mysql_num_rows($qLogin) == 0) {
echo 'De gebruikersnaam en/of wachtwoord is niet correct.';
} else {
// Alles ok, inloggen dus.
// Nu is 1 ding belangerijk:
// ZORG DAT ER EEN session_start() GEPLAATST IS, HETZIJ IN JE INDEX.PHP WAAR
// DEZE PAGINA IN GEPLAATS WORDT, HETZIJ BOVENAAN DEZE PAGINA (ALS ER GEEN
// INCLUDESYSTEEM IS)!!!
$_SESSION['Gebruiker'] = mysql_result($qLogin, 0);
$_SESSION['Gebruikersnaam'] = $_POST['Gebruikersnaam'];
$_SESSION['Stalnaam'] = $_POST['Stalnaam'];
// Mocht je nog andere data willen in je sessie,
// zoals een level, dien je dit hier te plaatsen.
?>
Je bent succesvol ingelogged. Klik <a href="controlepaneel.php">hier</a> om naar je controlepaneel te gaan.
<?php
}
}
?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
Gebruikersnaam:<br />
<input type="text" name="Gebruikersnaam" /><br />
Stalnaam:<br />
<input type="text" name="Stalnaam" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Dit is niet mijn gewoonte om queries op deze manier in te springen, maar om de layout
// van Sitemasters niet naar de knoppen te helpen doe ik dit even gek :)
$qLogin = mysql_query("SELECT id FROM horselife WHERE
gebruikersnaam = '".mysql_real_escape_string($_POST['Gebruikersnaam'])."' AND
stalnaam = '".mysql_real_escape_string($_POST['Stalnaam'])."' AND
wachtwoord = '".sha1($_POST['Wachtwoord'])."'");
// Met deze query selecteren we het gebruikers-id van de gebruikersnaam en controleren we of
// de account geactiveerd is in 1 keer. Als je deze niet snapt, lees hem dan 20 keer :)
// Je kan natuurlijk ook een tutorial over dit soort queries lezen, alhoewel
// ze poepsimpel zijn IMO.
// Deze query mag overigens geen resultaten opleveren om te mogen inloggen. Als deze
// wél een resultaat oplevert is de account nog niet geactiveerd (en bestaat de
// activatiedata dus nog).
$qActivatie = mysql_query("SELECT COUNT(id) FROM horselife WHERE
gebruikers = '".mysql_real_escape_string($_POST['Gebruikersnaam'])."' AND
id = horselife");
if(mysql_result($qActivatie,0) != 0) {
echo 'Het account is nog niet geactiveerd.';
} elseif(mysql_num_rows($qLogin) == 0) {
echo 'De gebruikersnaam en/of wachtwoord is niet correct.';
} else {
// Alles ok, inloggen dus.
// Nu is 1 ding belangerijk:
// ZORG DAT ER EEN session_start() GEPLAATST IS, HETZIJ IN JE INDEX.PHP WAAR
// DEZE PAGINA IN GEPLAATS WORDT, HETZIJ BOVENAAN DEZE PAGINA (ALS ER GEEN
// INCLUDESYSTEEM IS)!!!
$_SESSION['Gebruiker'] = mysql_result($qLogin, 0);
$_SESSION['Gebruikersnaam'] = $_POST['Gebruikersnaam'];
$_SESSION['Stalnaam'] = $_POST['Stalnaam'];
// Mocht je nog andere data willen in je sessie,
// zoals een level, dien je dit hier te plaatsen.
?>
Je bent succesvol ingelogged. Klik <a href="controlepaneel.php">hier</a> om naar je controlepaneel te gaan.
<?php
}
}
?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
Gebruikersnaam:<br />
<input type="text" name="Gebruikersnaam" /><br />
Stalnaam:<br />
<input type="text" name="Stalnaam" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
hier is het configuratiescript
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
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
<?php
$db = array (
'host' => 'localhost',
'user' => 'root',
'pass' => 'XXXX',
'dbname' => 'horselife'
);
$sql = "SELECT horselife FROM spelers";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
if(!mysql_connect($db['localhost'], $db['root'], $db['XXXwachtwoordXXX']))
{
trigger_error('Fout bij verbinden: '.mysql_error());
}
elseif(!mysql_select_db($db['horselife']))
{
trigger_error('Fout bij selecteren database: '.mysql_error());
}
else
{
$sql = "SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'";
if(!mysql_query($sql))
{
trigger_error('MySQL in ANSI niet mogelijk');
}
}
INSERT INTO spelers
(
id,
Gebruikersnaam,
Stalnaam,
Wachtwoord,
Email
)
VALUES
(
)
?>
$db = array (
'host' => 'localhost',
'user' => 'root',
'pass' => 'XXXX',
'dbname' => 'horselife'
);
$sql = "SELECT horselife FROM spelers";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
if(!mysql_connect($db['localhost'], $db['root'], $db['XXXwachtwoordXXX']))
{
trigger_error('Fout bij verbinden: '.mysql_error());
}
elseif(!mysql_select_db($db['horselife']))
{
trigger_error('Fout bij selecteren database: '.mysql_error());
}
else
{
$sql = "SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'";
if(!mysql_query($sql))
{
trigger_error('MySQL in ANSI niet mogelijk');
}
}
INSERT INTO spelers
(
id,
Gebruikersnaam,
Stalnaam,
Wachtwoord,
)
VALUES
(
)
?>
ik denk dat ik iets fouts gedaan heb, en dat het inlogsysteem niet geheel klopt bij het registratiesysteem en dat het configuratiesysteem niet goed gemaakt is en hetzelfde geld voor de query database.
Alvast bedankt!
Hoofdstuk 2 heet bij mij "de eerste tabel", bij jou ook? Ik ben nog nergens PHP code tegengekomen...
ik wil graag verder en dan ook goed doen.
Quote:
ALLEEN HULP BIJ DE VRAAG DIE IK STEL!
Sorry, maar op een forum zou je ook tips en adviezen van anderen moeten respecteren, en er voor openstaan.
Ik vind dit ronduit belachelijk.
Toevoeging op 14/07/2013 11:37:58:
Melissa Heijligers op 14/07/2013 11:36:42:
graag alleen antwoord op mijn vraag, want ik heb hoofdstuk 1,2,3, 4, 5 gedaan, ja oke, 4 niet want dat id pdo, maar ik kom er niet uit met waar ik nu ben.
ik wil graag verder en dan ook goed doen.
ik wil graag verder en dan ook goed doen.
Als je het goed wilt doen, begin je bij het begin.
Laat dan eens zien wat je gedaan heb.
Gewijzigd op 14/07/2013 11:38:55 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
CREATE TABLE spelers (
id int(100000000) NOT NULL auto_increment,
Gebruikersnaam varchar (30) NOT NULL,
Stalnaam varchar (40) NOT NULL,
Wachtwoord varchar (35) NOT NULL,
Email varchar (250) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB
id int(100000000) NOT NULL auto_increment,
Gebruikersnaam varchar (30) NOT NULL,
Stalnaam varchar (40) NOT NULL,
Wachtwoord varchar (35) NOT NULL,
Email varchar (250) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB
maar ook hierbij heb ik mijn twijfels, dit is van hoofdstuk 1 en 2
Waarom een int van honderdmiljoen?
Melissa,
Ik denk dat je even een stapje terug moet doen.
Begin eens eerst met een simpel formuliertje.
test.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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
// Zo zie je je POST waardes
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
<form action="test.php" method="post">
Gebruikersnaam:<br />
<input type="text" name="Gebruikersnaam" /><br />
Stalnaam:<br />
<input type="text" name="Stalnaam" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
// Zo zie je je POST waardes
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
<form action="test.php" method="post">
Gebruikersnaam:<br />
<input type="text" name="Gebruikersnaam" /><br />
Stalnaam:<br />
<input type="text" name="Stalnaam" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
Als dat werkt dan pas verder gaan met je php code.
Probeer het eens.
of heb ik het verkeerd gelezen?
Toevoeging op 14/07/2013 11:42:32:
Bart V B op 14/07/2013 11:41:18:
Hoofdstuk 2? Volgens mij heb ik wat gemist.
Melissa,
Ik denk dat je even een stapje terug moet doen.
Begin eens eerst met een simpel formuliertje.
test.php
Als dat werkt dan pas verder gaan met je php code.
Probeer het eens.
Melissa,
Ik denk dat je even een stapje terug moet doen.
Begin eens eerst met een simpel formuliertje.
test.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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
// Zo zie je je POST waardes
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
<form action="test.php" method="post">
Gebruikersnaam:<br />
<input type="text" name="Gebruikersnaam" /><br />
Stalnaam:<br />
<input type="text" name="Stalnaam" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
// Zo zie je je POST waardes
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
<form action="test.php" method="post">
Gebruikersnaam:<br />
<input type="text" name="Gebruikersnaam" /><br />
Stalnaam:<br />
<input type="text" name="Stalnaam" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
Als dat werkt dan pas verder gaan met je php code.
Probeer het eens.
mag ik vragen wat dit voor script is?
Melissa Heijligers op 14/07/2013 11:41:44:
nou, ik dacht dat id dat je het aantal moet plaatsen van ruimte, en ik weet niet hoeveel spelers er op mijn spel komen dus heb ik maar honderdmiljoen gedaan want id gaat toch zo: 1 volgende speler is 2 die erna is 3 enz..
of heb ik het verkeerd gelezen?
of heb ik het verkeerd gelezen?
Het aantal bytes wat je reserveert, niet het aantal records.
Toevoeging op 14/07/2013 11:45:16:
Melissa Heijligers op 14/07/2013 11:41:44:
nou, ik dacht dat id dat je het aantal moet plaatsen van ruimte, en ik weet niet hoeveel spelers er op mijn spel komen dus heb ik maar honderdmiljoen gedaan want id gaat toch zo: 1 volgende speler is 2 die erna is 3 enz..
of heb ik het verkeerd gelezen?
Toevoeging op 14/07/2013 11:42:32:
mag ik vragen wat dit voor script is?
of heb ik het verkeerd gelezen?
Toevoeging op 14/07/2013 11:42:32:
Bart V B op 14/07/2013 11:41:18:
Hoofdstuk 2? Volgens mij heb ik wat gemist.
Melissa,
Ik denk dat je even een stapje terug moet doen.
Begin eens eerst met een simpel formuliertje.
test.php
Als dat werkt dan pas verder gaan met je php code.
Probeer het eens.
Melissa,
Ik denk dat je even een stapje terug moet doen.
Begin eens eerst met een simpel formuliertje.
test.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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
// Zo zie je je POST waardes
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
<form action="test.php" method="post">
Gebruikersnaam:<br />
<input type="text" name="Gebruikersnaam" /><br />
Stalnaam:<br />
<input type="text" name="Stalnaam" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
// Zo zie je je POST waardes
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
?>
<form action="test.php" method="post">
Gebruikersnaam:<br />
<input type="text" name="Gebruikersnaam" /><br />
Stalnaam:<br />
<input type="text" name="Stalnaam" /><br />
Wachtwoord:<br />
<input type="password" name="Wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
Als dat werkt dan pas verder gaan met je php code.
Probeer het eens.
mag ik vragen wat dit voor script is?
BASISKENNIS!
hoeveel bytes heb ik voor id nodig denk je?
Wat ik daar laat zien is in simpel Nederlands:
"Als de server een aanvraag krijg, en de methode is posten."
ik echo een pre om het wat netter te maken.
Nu laat ik de $_POST waardes zien.
ik sluit de echo van de pre tag
Als je dat snapt dan kan je dat uitbereiden tot war functionelere code.
Maar dit is voor een beginnende phper eigenlijk een eerste behoefte.
Zo maak je minder fouten en zie je wat je doet.
voor id kun je een standaard INT gebruiken of als je echt miljoenen records verwacht een BIGINT
Mocht dit gedrag blijven voortzetten zullen er nodige sancties moeten worden genomen. Jammer maar helaas.
Maar je komt nu toch heel erg in de buurt van een afkoelperiode.
We willen je graag helpen, maar ga zeker niet je eigen weg door niet naar anderen te luisteren.
Dit had je anders zelfs een forumtopic kunnen besparen.
Oh ja, en als er iets mis is, kom dan ook met relevante code aan. Dat staat ook in de huisregels.
Gewijzigd op 14/07/2013 12:31:57 door - Ariën -