inlog/registreer systeem werkt niet
Dit is de code:
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
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
<?php
include 'sql2.php'; #sql gegevens
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
<?php
if(isset($_POST['submit'])) #als er op de submit knop is gedrukt
{
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$minecraftnaam = mysql_real_escape_string($_POST['minecraftnaam']);
$fout = false; #instellen op false. als er een fout is gaat deze naar true
if(empty($password)) #als wachtwoordveld leeg is
{
$fout = true;
echo 'Je hebt geen wachtwoord opgegeven. <br>';
}
if(empty($email)) #als emailveld leeg is
{
$fout = true;
echo 'Je hebt geen email opgegeven. <br>';
}
if(empty($minecraftnaam)) #als minecraftnaam leeg is
{
$fout = true;
echo 'Je hebt geen minecraft naam opgegeven. <br>';
}
if($fout == true) #als er boven iets fout is gegaan
{
echo 'er zijn fouten gevonden. <br>';
}
if($fout == false) #als boven alles goed is gegaan
{
echo 'er zijn geen fouten gevonden. <br>';
#wachtwoord versleutelen
$hash = hash("sha256",$minecraftnaam).hash("haval256,5",$password).hash("md5",$minecraftnaam);
$superhash = crypt($hash,$password);
#sql query aanmaken om te kijken of de naam al bestaat
$sql =( " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".$minecraftnaam."'");
$res = mysql_query($sql); #sql query uitvoeren
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
if(!$res == $minecraftnaam) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql =( " INSERT INTO inloggen
(
password,
minecraftname,
email
)
VALUES
(
'".$superhash."',
'".$minecraftnaam."',
'".$email."'
)
");
$res = mysql_query($sql); #sql query uitvoeren
if(!$res = mysql_query($sql))#als de query mislukt is
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
echo $sql;
}
else #als de gebruikers naam al bestaat
{
echo 'De opgegeven minecraftnaam bestaat al.';
}
}
}
?>
</body>
</html>
include 'sql2.php'; #sql gegevens
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
<?php
if(isset($_POST['submit'])) #als er op de submit knop is gedrukt
{
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$minecraftnaam = mysql_real_escape_string($_POST['minecraftnaam']);
$fout = false; #instellen op false. als er een fout is gaat deze naar true
if(empty($password)) #als wachtwoordveld leeg is
{
$fout = true;
echo 'Je hebt geen wachtwoord opgegeven. <br>';
}
if(empty($email)) #als emailveld leeg is
{
$fout = true;
echo 'Je hebt geen email opgegeven. <br>';
}
if(empty($minecraftnaam)) #als minecraftnaam leeg is
{
$fout = true;
echo 'Je hebt geen minecraft naam opgegeven. <br>';
}
if($fout == true) #als er boven iets fout is gegaan
{
echo 'er zijn fouten gevonden. <br>';
}
if($fout == false) #als boven alles goed is gegaan
{
echo 'er zijn geen fouten gevonden. <br>';
#wachtwoord versleutelen
$hash = hash("sha256",$minecraftnaam).hash("haval256,5",$password).hash("md5",$minecraftnaam);
$superhash = crypt($hash,$password);
#sql query aanmaken om te kijken of de naam al bestaat
$sql =( " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".$minecraftnaam."'");
$res = mysql_query($sql); #sql query uitvoeren
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
if(!$res == $minecraftnaam) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql =( " INSERT INTO inloggen
(
password,
minecraftname,
)
VALUES
(
'".$superhash."',
'".$minecraftnaam."',
'".$email."'
)
");
$res = mysql_query($sql); #sql query uitvoeren
if(!$res = mysql_query($sql))#als de query mislukt is
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
echo $sql;
}
else #als de gebruikers naam al bestaat
{
echo 'De opgegeven minecraftnaam bestaat al.';
}
}
}
?>
</body>
</html>
nu vraag ik me af wat er fout gaat en hoe ik dit kan oplossen
Gewijzigd op 05/08/2012 16:21:02 door Jeroen ruiten
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
En wat zit er nu in $res?
Een #resource of een boolean, maar zeker geen naam.
54 if(!$res == $minecraftnaam) #controleren of de gebruikers naam als bestaat, zo niet ga door
Code (php)
1
2
3
4
5
2
3
4
5
<?php
//regel 48/49
$res = mysql_query($sql); #sql query uitvoeren
if(!$res = mysql_query($sql)) #als de query mislukt is
?>
//regel 48/49
$res = mysql_query($sql); #sql query uitvoeren
if(!$res = mysql_query($sql)) #als de query mislukt is
?>
Ook handig, de query twee keer uitvoeren. Niet echt nodig lijkt me...
Aangezien $res nog een resource is, zal dit altijd een false opleveren....
Code (php)
1
2
3
4
5
2
3
4
5
<?php
//regel 72/73
$res = mysql_query($sql); #sql query uitvoeren
if(!$res = mysql_query($sql))#als de query mislukt is
?>
//regel 72/73
$res = mysql_query($sql); #sql query uitvoeren
if(!$res = mysql_query($sql))#als de query mislukt is
?>
En nog een keer de query twee keer uitvoeren.
gebruik liever
om te controleren of een formulier verzonden is.
Je gaat eerst variabelen aanmaken (regel 4-7) en dan pas controleren of ze wel gevuld zijn. Controleer of de $_POST waarden bestaan met isset. Ga niet (onnodig) variabelen kopieren. En mysql_real_escape_string gebruik je _in_ een query.
Doorgaans is de volgorde: eerst php (verwerking, controle, etc.) en dan html.
En plaats je volledige code aub tussen code-tags.
Code (php)
1
2
3
4
2
3
4
$res2 = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
echo $res2;
if($res2 == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
echo $res2;
if($res2 == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
nu probeerde die de opgegeven naam en wachtwoord en email er minimaal 2 keer intezetten want ik krijg de error dat deze rij al bestaat van sql zelf. en als ik ga kijken zie ik dat ik 4 rijen heb het de 4 verschilende namen maar het id gaat van 1 naar 5 naar 9 en bij de vierde naar 11. hoe kan dit?
Gewijzigd op 05/08/2012 16:14:39 door jeroen ruiten
Omdat je al je query's dubbel uitvoert. Bij INSERT zal de tweede dus mislukken doordat je identieke gegevens gebruikt. De auto_increment gaat echter gewoon eentje hoger staan.
Het id heb je waarschijnlijk als auto_increment aangemaakt. Dat loopt dus automatisch op. Als jij er rijen uithaalt dan verdwijnt dat id, maar wordt daarna niet nog een keer gebruikt (wil je ook niet!). Dat die id's dus niet meer perfect oplopen kan kloppen als je af en toe iets delete.
- SanThe - op 05/08/2012 16:14:05:
Omdat je al je query's dubbel uitvoert. Bij INSERT zal de tweede dus mislukken doordat je identieke gegevens gebruikt. De auto_increment gaat echter gewoon eentje hoger staan.
hoe bedoel je dubbel? die snap ik even niet.
de twee query's zijn toch verschilend.
de eerste kijken en de tweede voert uit
(waar gaat het mis?!)
Toevoeging op 05/08/2012 16:18:39:
Erwin H op 05/08/2012 16:15:43:
Het id heb je waarschijnlijk als auto_increment aangemaakt. Dat loopt dus automatisch op. Als jij er rijen uithaalt dan verdwijnt dat id, maar wordt daarna niet nog een keer gebruikt (wil je ook niet!). Dat die id's dus niet meer perfect oplopen kan kloppen als je af en toe iets delete.
maar ik heb er niets uitgehaald. dat is ook zo gek er aan
Toevoeging op 05/08/2012 16:23:13:
- SanThe - op 05/08/2012 15:46:43:
Waarom twee keer de query uitvoeren?
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
En wat zit er nu in $res?
Een #resource of een boolean, maar zeker geen naam.
54 if(!$res == $minecraftnaam) #controleren of de gebruikers naam als bestaat, zo niet ga door
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
En wat zit er nu in $res?
Een #resource of een boolean, maar zeker geen naam.
54 if(!$res == $minecraftnaam) #controleren of de gebruikers naam als bestaat, zo niet ga door
dus 48 kan weg als ik het begrijp. dus 49 voert het ook uit?
- SanThe - op 05/08/2012 15:46:43:
Waarom twee keer de query uitvoeren?
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
Gewijzigd op 05/08/2012 16:24:07 door - SanThe -
Gewijzigd op 05/08/2012 16:28:10 door jeroen ruiten
- SanThe - op 05/08/2012 16:23:31:
- SanThe - op 05/08/2012 15:46:43:
Waarom twee keer de query uitvoeren?
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
Moet dus zijn:
$res = mysql_query($sql); #sql query uitvoeren
if($res === false) #als de query mislukt is
- SanThe - op 05/08/2012 16:29:05:
Moet dus zijn:
$res = mysql_query($sql); #sql query uitvoeren
if($res === false) #als de query mislukt is
- SanThe - op 05/08/2012 16:23:31:
- SanThe - op 05/08/2012 15:46:43:
Waarom twee keer de query uitvoeren?
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
48 $res = mysql_query($sql); #sql query uitvoeren
49 if(!$res = mysql_query($sql)) #als de query mislukt is
Moet dus zijn:
$res = mysql_query($sql); #sql query uitvoeren
if($res === false) #als de query mislukt is
is dit ook goed?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$sql =( " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($minecraftnaam)."'");
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($minecraftnaam)."'");
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
Toevoeging op 05/08/2012 16:39:06:
ik heb voor zo ver ik weet alles aangepast wat jullie zijden en het 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
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
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
<?php
include 'sql2.php'; #sql gegevens
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
$fout = false; #instellen op false. als er een fout is gaat deze naar true
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout = true;
echo 'Je hebt geen wachtwoord opgegeven. <br>';
}
if(empty($_POST['email'])) #als emailveld leeg is
{
$fout = true;
echo 'Je hebt geen email opgegeven. <br>';
}
if(empty($_POST['minecraftnaam'])) #als minecraftnaam leeg is
{
$fout = true;
echo 'Je hebt geen minecraft naam opgegeven. <br>';
}
if($fout == true) #als er boven iets fout is gegaan
{
echo 'er zijn fouten gevonden. <br>';
}
if($fout == false) #als boven alles goed is gegaan
{
echo 'er zijn geen fouten gevonden. <br>';
#wachtwoord versleutelen
$hash = hash("sha256",$minecraftnaam).hash("haval256,5",$password).hash("md5",$minecraftnaam);
$superhash = crypt($hash,$password);
#sql query aanmaken om te kijken of de naam al bestaat
$sql =( " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($minecraftnaam)."'");
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
$res2 = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
echo $res2;
if($res2 == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql =( " INSERT INTO inloggen
(
password,
minecraftname,
email
)
VALUES
(
'".mysql_real_escape_string($superhash)."',
'".mysql_real_escape_string($minecraftnaam)."',
'".mysql_real_escape_string($email)."'
)
");
if(!$res = mysql_query($sql))#als de query mislukt is
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
echo $sql; #voor testen even laten zien wat er in de query staat
}
else #als de gebruikers naam al bestaat
{
echo 'De opgegeven minecraftnaam bestaat al.';
}
}
}
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
</body>
</html>
include 'sql2.php'; #sql gegevens
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
$fout = false; #instellen op false. als er een fout is gaat deze naar true
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout = true;
echo 'Je hebt geen wachtwoord opgegeven. <br>';
}
if(empty($_POST['email'])) #als emailveld leeg is
{
$fout = true;
echo 'Je hebt geen email opgegeven. <br>';
}
if(empty($_POST['minecraftnaam'])) #als minecraftnaam leeg is
{
$fout = true;
echo 'Je hebt geen minecraft naam opgegeven. <br>';
}
if($fout == true) #als er boven iets fout is gegaan
{
echo 'er zijn fouten gevonden. <br>';
}
if($fout == false) #als boven alles goed is gegaan
{
echo 'er zijn geen fouten gevonden. <br>';
#wachtwoord versleutelen
$hash = hash("sha256",$minecraftnaam).hash("haval256,5",$password).hash("md5",$minecraftnaam);
$superhash = crypt($hash,$password);
#sql query aanmaken om te kijken of de naam al bestaat
$sql =( " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($minecraftnaam)."'");
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
$res2 = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
echo $res2;
if($res2 == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql =( " INSERT INTO inloggen
(
password,
minecraftname,
)
VALUES
(
'".mysql_real_escape_string($superhash)."',
'".mysql_real_escape_string($minecraftnaam)."',
'".mysql_real_escape_string($email)."'
)
");
if(!$res = mysql_query($sql))#als de query mislukt is
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
echo $sql; #voor testen even laten zien wat er in de query staat
}
else #als de gebruikers naam al bestaat
{
echo 'De opgegeven minecraftnaam bestaat al.';
}
}
}
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
</body>
</html>
hij doet het nu wel maar zijn er lekken in? als ik zo doorga leer ik het dan goed?
$sql =( " INSERT ..... ");
Die ( en ) mogen weg.
Dus gewoon zo:
$sql = " INSERT ..... ";
Bij al die empty() controles geef je een echo. Daardoor is de html niet meer valid omdat je <html> pas op regel 87 wordt geopend. Errors dus in een $var stoppen en op de juiste plaats een echo $var doen.
- SanThe - op 05/08/2012 16:49:24:
Al een heel stuk beter.
$sql =( " INSERT ..... ");
Die ( en ) mogen weg.
Dus gewoon zo:
$sql = " INSERT ..... ";
Bij al die empty() controles geef je een echo. Daardoor is de html niet meer valid omdat je <html> pas op regel 87 wordt geopend. Errors dus in een $var stoppen en op de juiste plaats een echo $var doen.
$sql =( " INSERT ..... ");
Die ( en ) mogen weg.
Dus gewoon zo:
$sql = " INSERT ..... ";
Bij al die empty() controles geef je een echo. Daardoor is de html niet meer valid omdat je <html> pas op regel 87 wordt geopend. Errors dus in een $var stoppen en op de juiste plaats een echo $var doen.
hoe kan ik een script stoppen daar?
Toevoeging op 05/08/2012 16:57:54:
ik heb mijn code nog eens goed doorgelezen en de fouten $ vervangen door $_POST en de haakjes weggelaten
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
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
<?php
include 'sql2.php'; #sql gegevens
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
$fout = false; #instellen op false. als er een fout is gaat deze naar true
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout = true;
echo 'Je hebt geen wachtwoord opgegeven. <br>';
}
if(empty($_POST['email'])) #als emailveld leeg is
{
$fout = true;
echo 'Je hebt geen email opgegeven. <br>';
}
if(empty($_POST['minecraftnaam'])) #als minecraftnaam leeg is
{
$fout = true;
echo 'Je hebt geen minecraft naam opgegeven. <br>';
}
if($fout == true) #als er boven iets fout is gegaan
{
echo 'er zijn fouten gevonden. <br>';
}
if($fout == false) #als boven alles goed is gegaan
{
echo 'er zijn geen fouten gevonden. <br>';
#wachtwoord versleutelen
$hash = hash("sha256",($_POST['minecraftnaam'])).hash("haval256,5",($_POST['password'])).hash("md5",($_POST['minecraftnaam']));
$superhash = crypt($hash,($_POST['password']));
#sql query aanmaken om te kijken of de naam al bestaat
$sql = " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($_POST['minecraftnaam'])."'";
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
$res2 = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
echo $res2;
if($res2 == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql = " INSERT INTO inloggen
(
password,
minecraftname,
email
)
VALUES
(
'".mysql_real_escape_string($superhash)."',
'".mysql_real_escape_string($_POST['minecraftnaam'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
";
if(!$res = mysql_query($sql))#als de query mislukt is
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
echo $sql; #voor testen even laten zien wat er in de query staat
}
else #als de gebruikers naam al bestaat
{
echo 'De opgegeven minecraftnaam bestaat al.';
}
}
}
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
</body>
</html>
include 'sql2.php'; #sql gegevens
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
$fout = false; #instellen op false. als er een fout is gaat deze naar true
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout = true;
echo 'Je hebt geen wachtwoord opgegeven. <br>';
}
if(empty($_POST['email'])) #als emailveld leeg is
{
$fout = true;
echo 'Je hebt geen email opgegeven. <br>';
}
if(empty($_POST['minecraftnaam'])) #als minecraftnaam leeg is
{
$fout = true;
echo 'Je hebt geen minecraft naam opgegeven. <br>';
}
if($fout == true) #als er boven iets fout is gegaan
{
echo 'er zijn fouten gevonden. <br>';
}
if($fout == false) #als boven alles goed is gegaan
{
echo 'er zijn geen fouten gevonden. <br>';
#wachtwoord versleutelen
$hash = hash("sha256",($_POST['minecraftnaam'])).hash("haval256,5",($_POST['password'])).hash("md5",($_POST['minecraftnaam']));
$superhash = crypt($hash,($_POST['password']));
#sql query aanmaken om te kijken of de naam al bestaat
$sql = " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($_POST['minecraftnaam'])."'";
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
$res2 = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
echo $res2;
if($res2 == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql = " INSERT INTO inloggen
(
password,
minecraftname,
)
VALUES
(
'".mysql_real_escape_string($superhash)."',
'".mysql_real_escape_string($_POST['minecraftnaam'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
";
if(!$res = mysql_query($sql))#als de query mislukt is
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
echo $sql; #voor testen even laten zien wat er in de query staat
}
else #als de gebruikers naam al bestaat
{
echo 'De opgegeven minecraftnaam bestaat al.';
}
}
}
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
</body>
</html>
Gebruik een array() voor de fouten.
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
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
<?php
$fout = array(); // als er een fout is wordt dit gevuld
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout[] = 'Je hebt geen wachtwoord opgegeven. <br>';
}
// enzovoort
// en dan kijk je of er fouten zijn
if(count($fout) == 0) // er zijn geen fouten
{
// INSERT en dergelijke
}
}
// html en op de juiste plaats
if(count($fout) > 0) // er zijn fouten
{
foreach($fout as $regel)
{
echo $regel;
}
}
// formulier
?>
$fout = array(); // als er een fout is wordt dit gevuld
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout[] = 'Je hebt geen wachtwoord opgegeven. <br>';
}
// enzovoort
// en dan kijk je of er fouten zijn
if(count($fout) == 0) // er zijn geen fouten
{
// INSERT en dergelijke
}
}
// html en op de juiste plaats
if(count($fout) > 0) // er zijn fouten
{
foreach($fout as $regel)
{
echo $regel;
}
}
// formulier
?>
Gewijzigd op 05/08/2012 17:09:38 door - SanThe -
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
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
<?php
include 'sql2.php'; #sql gegevens
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
$fout = false; #instellen op false. als er een fout is gaat deze naar true
$foutmsg = array();
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen wachtwoord opgegeven. <br>';
}
if(empty($_POST['email'])) #als emailveld leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen email opgegeven. <br>';
}
if(empty($_POST['minecraftnaam'])) #als minecraftnaam leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen minecraft naam opgegeven. <br>';
}
if($fout == true) #als er boven iets fout is gegaan
{
echo 'er zijn fouten gevonden. <br>';
}
if($fout == false) #als boven alles goed is gegaan
{
echo 'er zijn geen fouten gevonden. <br>';
#wachtwoord versleutelen
$hash = hash("sha256",($_POST['minecraftnaam'])).hash("haval256,5",($_POST['password'])).hash("md5",($_POST['minecraftnaam']));
$superhash = crypt($hash,($_POST['password']));
#sql query aanmaken om te kijken of de naam al bestaat
$sql = " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($_POST['minecraftnaam'])."'";
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
$res2 = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
echo $res2;
if($res2 == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql = " INSERT INTO inloggen
(
password,
minecraftname,
email
)
VALUES
(
'".mysql_real_escape_string($superhash)."',
'".mysql_real_escape_string($_POST['minecraftnaam'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
";
if(!$res = mysql_query($sql))#als de query mislukt is
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
echo $sql; #voor testen even laten zien wat er in de query staat
}
else #als de gebruikers naam al bestaat
{
$foutmsg[] = 'De opgegeven minecraftnaam bestaat al.';
}
}
}
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
<?php
if(count($foutmsg) > 0)
{
echo 'Het volgende is fout gegaan:<br><br>';
foreach($foutmsg as $regel)
{
echo $regel;
}
}
?>
</body>
</html>
include 'sql2.php'; #sql gegevens
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
$fout = false; #instellen op false. als er een fout is gaat deze naar true
$foutmsg = array();
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen wachtwoord opgegeven. <br>';
}
if(empty($_POST['email'])) #als emailveld leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen email opgegeven. <br>';
}
if(empty($_POST['minecraftnaam'])) #als minecraftnaam leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen minecraft naam opgegeven. <br>';
}
if($fout == true) #als er boven iets fout is gegaan
{
echo 'er zijn fouten gevonden. <br>';
}
if($fout == false) #als boven alles goed is gegaan
{
echo 'er zijn geen fouten gevonden. <br>';
#wachtwoord versleutelen
$hash = hash("sha256",($_POST['minecraftnaam'])).hash("haval256,5",($_POST['password'])).hash("md5",($_POST['minecraftnaam']));
$superhash = crypt($hash,($_POST['password']));
#sql query aanmaken om te kijken of de naam al bestaat
$sql = " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($_POST['minecraftnaam'])."'";
if(!$res = mysql_query($sql)) #als de query mislukt is
{
trigger_error(mysql_error().'<br> in query: '.$sql);
}
$res2 = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
echo $res2;
if($res2 == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql = " INSERT INTO inloggen
(
password,
minecraftname,
)
VALUES
(
'".mysql_real_escape_string($superhash)."',
'".mysql_real_escape_string($_POST['minecraftnaam'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
";
if(!$res = mysql_query($sql))#als de query mislukt is
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
echo $sql; #voor testen even laten zien wat er in de query staat
}
else #als de gebruikers naam al bestaat
{
$foutmsg[] = 'De opgegeven minecraftnaam bestaat al.';
}
}
}
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
<?php
if(count($foutmsg) > 0)
{
echo 'Het volgende is fout gegaan:<br><br>';
foreach($foutmsg as $regel)
{
echo $regel;
}
}
?>
</body>
</html>
Gewijzigd op 05/08/2012 17:38:44 door - SanThe -
@erwin: kan een hash dan niet perongelijk een ding erinzetten wat het zelfde lijk als een sql injectie
Nee, dat gaat niet gebeuren.
het is opgelost
(voor andere die dit zelfde probleem hebben)
Hier is de goede verzie:
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
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
<?php
include 'sql2.php'; #sql gegevens
$foutmsg = array(); #arry aanmaken als er fouten zijn. hier de fout in opslaan
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
$fout = false; #instellen op false. als er een fout is gaat deze naar true
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen wachtwoord opgegeven. <br>'; #fout toevoegen aan array
}
if(empty($_POST['email'])) #als emailveld leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen email opgegeven. <br>'; #fout toevoegen aan array
}
if(!filter_var(($_POST['email']), FILTER_VALIDATE_EMAIL)) #als emailveld niet de juiste email-opbouw heeft voorbeeld : [email protected] is goed
{
$fout = true;
$foutmsg[] = 'Het opgegeven E-mail adres is niet geldig. <br>'; #fout toevoegen aan array
}
if(empty($_POST['minecraftnaam'])) #als minecraftnaam leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen minecraft naam opgegeven. <br>'; #fout toevoegen aan array
}
if($fout == false) #als boven alles goed is gegaan
{
#wachtwoord versleutelen
$hash = hash("sha256",($_POST['minecraftnaam'])).hash("haval256,5",($_POST['password'])).hash("md5",($_POST['minecraftnaam']));
$superhash = crypt($hash,($_POST['password']));
#sql query aanmaken om te kijken of de naam al bestaat
$sql = " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($_POST['minecraftnaam'])."'";
if(!$res = mysql_query($sql)) #query aanmaken en kijken of die mislukt.
{
$foutmsg[] = 'Er is een onbekende fout opgetreden. Probeer het later opnieuw'; #als de query mislukt is
}
$bestaat = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
if($bestaat == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql = " INSERT INTO inloggen
(
password,
minecraftname,
email
)
VALUES
(
'".($superhash)."',
'".mysql_real_escape_string($_POST['minecraftnaam'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
";
if(!$res = mysql_query($sql))# query aanmaken en kijken of die mislukt.
{
$foutmsg[] = 'Er is een onbekende fout opgetreden. Probeer het later opnieuw'; # als de query mislukt is
}
}
else #als de gebruikers naam al bestaat
{
$foutmsg[] = 'De opgegeven minecraftnaam bestaat al.'; #fout aan array toevoegen
}
}
}
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
<?php
if(count($foutmsg) > 0) #als er fouten zijn gevonden
{
echo 'Het volgende is fout gegaan:<br><br>'; #dit alleen plaatsen als er fouten zijn gevonden
foreach($foutmsg as $regel)#een loep voor iedere fout die is gemaakt
{
echo $regel; #de fout aan de gebruiker geven en zeggen hoe ze dit moeten oplossen
}
}
?>
</body>
</html>
include 'sql2.php'; #sql gegevens
$foutmsg = array(); #arry aanmaken als er fouten zijn. hier de fout in opslaan
if($_SERVER['REQUEST_METHOD'] === 'POST') #als er op de submit knop is gedrukt
{
$fout = false; #instellen op false. als er een fout is gaat deze naar true
if(empty($_POST['password'])) #als wachtwoordveld leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen wachtwoord opgegeven. <br>'; #fout toevoegen aan array
}
if(empty($_POST['email'])) #als emailveld leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen email opgegeven. <br>'; #fout toevoegen aan array
}
if(!filter_var(($_POST['email']), FILTER_VALIDATE_EMAIL)) #als emailveld niet de juiste email-opbouw heeft voorbeeld : [email protected] is goed
{
$fout = true;
$foutmsg[] = 'Het opgegeven E-mail adres is niet geldig. <br>'; #fout toevoegen aan array
}
if(empty($_POST['minecraftnaam'])) #als minecraftnaam leeg is
{
$fout = true;
$foutmsg[] = 'Je hebt geen minecraft naam opgegeven. <br>'; #fout toevoegen aan array
}
if($fout == false) #als boven alles goed is gegaan
{
#wachtwoord versleutelen
$hash = hash("sha256",($_POST['minecraftnaam'])).hash("haval256,5",($_POST['password'])).hash("md5",($_POST['minecraftnaam']));
$superhash = crypt($hash,($_POST['password']));
#sql query aanmaken om te kijken of de naam al bestaat
$sql = " SELECT minecraftname
FROM inloggen
WHERE minecraftname = '".mysql_real_escape_string($_POST['minecraftnaam'])."'";
if(!$res = mysql_query($sql)) #query aanmaken en kijken of die mislukt.
{
$foutmsg[] = 'Er is een onbekende fout opgetreden. Probeer het later opnieuw'; #als de query mislukt is
}
$bestaat = mysql_num_rows($res); #kijken hoevaak de gevraagde naam voorkomt
if($bestaat == 0) #controleren of de gebruikers naam als bestaat, zo niet ga door
{
#sql query aanmaken om de ingevoerde gegevens op te slaan in de database
$sql = " INSERT INTO inloggen
(
password,
minecraftname,
)
VALUES
(
'".($superhash)."',
'".mysql_real_escape_string($_POST['minecraftnaam'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
";
if(!$res = mysql_query($sql))# query aanmaken en kijken of die mislukt.
{
$foutmsg[] = 'Er is een onbekende fout opgetreden. Probeer het later opnieuw'; # als de query mislukt is
}
}
else #als de gebruikers naam al bestaat
{
$foutmsg[] = 'De opgegeven minecraftnaam bestaat al.'; #fout aan array toevoegen
}
}
}
?>
<html>
<head>
<title>test - registeren</title>
</head>
<body>
<h1>registeren:</h1>
<form method="POST" action="registeren.php">
Je minecraft naam: <input name="minecraftnaam" type="text" size="20" maxlength="35"> <br>
Je wachtwoord: <input name="password" type="password" size="20" maxlength="35"> <br>
Je e-mail: <input name="email" type="text" size="20" maxlength="35"> <br>
<!-- submit --> <input name="submit" type="submit" value="submit"> <br>
</form>
<?php
if(count($foutmsg) > 0) #als er fouten zijn gevonden
{
echo 'Het volgende is fout gegaan:<br><br>'; #dit alleen plaatsen als er fouten zijn gevonden
foreach($foutmsg as $regel)#een loep voor iedere fout die is gemaakt
{
echo $regel; #de fout aan de gebruiker geven en zeggen hoe ze dit moeten oplossen
}
}
?>
</body>
</html>
Gewijzigd op 05/08/2012 21:25:16 door jeroen ruiten