Aanmeldformulier: niet alle velden zijn ingevuld
Ik ben sinds gister begonnen met het leren van PHP en loop nu al tegen een probleem aan, die ik nog niet zelf kan oplossen. Het probleem is dat mijn registratieformulier steeds de melding geeft dat niet alle velden ingevuld zijn, al zijn ze dit wel.
Ik heb een half uur naar mijn code zitten staren, maar kon niet vinden waar de fout zat. Ik denk dan ook dat het iets kleins is, wat nogal moeilijk vindbaar is.
De registratie gebeurt volledig op mijn home pagina (index.php).
Graag hoor ik jullie advies.
Alvast bedankt.
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
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
<?php
include("inc/header.inc.php");
?>
<?php
$reg = @$_POST['reg'];
// declaring variables to prevent errors
$fn = ""; //voornaam
$ln = ""; //achternaam
$un = ""; //gebruikersnaam
$em = ""; //Email
$em2 = ""; //Email 2
$pswd = ""; //Wachtwoord
$pswd2 = ""; //Wachtwoord 2
$d = ""; // Aanmeld datum
$u_check = ""; //controleren of gebruikersnaam bestaat
//registratie formulier
$fn = strip_tags(@$POST['fname']);
$ln = strip_tags(@$POST['lname']);
$un = strip_tags(@$POST['username']);
$em = strip_tags(@$POST['email']);
$em2 = strip_tags(@$POST['email2']);
$pswd = strip_tags(@$POST['password']);
$pswd2 = strip_tags(@$POST['password2']);
$d = date("d-m-Y");
if ($reg) {
if ($em == $em2) {
// controleren of gebruiker al bestaat
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
// tel het aantal regels waar gebruikersnaam = $un
$check = mysql_num_rows($u_check);
if ($check == 0) {
// controleer of alle velden ingevuld zijn
if ($fn && $ln && $un && $em && $em2 && $pswd && $pswd2) {
// controleer of de wachtwoorden overeenkomen
if ($pswd == $pswd2) {
// controleer of de maximum lengte van gebruikersnaam/voornaam/achternaam niet meer dan 25 tekens bevat
if (strlen($un) > 25 || strlen($fn) > 25 || strlen($ln) > 25) {
echo "Het maximale limiet voor de gebruikersnaam/voornaam/achternaam is 25 tekens";
} else {
//Controleer of de maximale lengte van het wachtwoord niet meer dan 30 tekens is en niet minder dan 5 karakters.
if (strlen($pswd) > 30 || strlen($pswd) < 5) {
echo "Uw wachtwoord moet tussen de 5 en 30 tekens langs zijn!";
} else {
//encrypt wachtwoord en wachtwoord 2 voordat ze naar de database gestuurd worden
$salt = "?ZdAJsr_3bppTE-pNYTq^XD";
$pepper = "UqwJnAMrZB$_=54GGGhHDpUiUhlNbaowWerdVBX048eZDH!@&m#&*#CZ6B&6";
$pswd = sha1(md5(sha1($salt . $pswd . $pepper)));
$pswd2 = sha1(md5(sha1($salt . $pswd2 . $pepper)));
$query = mysql_query("INSERT INTO users VALUES('','$un','$fn','$ln','$em','$pswd','$d','0')");
echo "<h2>Welkom op Socialia</h2>. Login om te beginnen ...";
}
}
} else {
echo "Uw wachtwoorden komen niet overeen";
}
} else {
echo "Niet alle velden zijn ingevuld";
}
} else {
echo "Gebruikersnaam wordt al gebruikt...";
}
} else {
echo "Uw emailadressen komen niet overeen!";
}
}
?>
<div id="join">
<h2>Join ... vandaag nog!</h2>
</div>
<div id="signup">
<h2>Meld je aan!</h2>
<form action="#" method="POST">
<table>
<tr>
<td><input type="text" name="fname" size="25" placeholder="Voornaam" /></td>
</tr>
<tr>
<td><input type="text" name="lname" size="25" placeholder="Achternaam" /></td>
</tr>
<tr>
<td><input type="text" name="username " size="25" placeholder="Gebruikersnaam" /></td>
</tr>
<tr>
<td><input type="text" name="email" size="25" placeholder="Emailadres" /></td>
</tr>
<tr>
<td><input type="text" name="email2" size="25" placeholder="Emailadres (controle)" /></td>
</tr>
<tr>
<td><input type="password" name="password" size="25" placeholder="Wachtwoord" /></td>
</tr>
<tr>
<td><input type="password" name="password2" size="25" placeholder="Wachtwoord (controle)" /></td>
</tr>
<tr>
<td><input type="submit" name="reg" value="Aanmelden" /></td>
</tr>
</table>
</form>
</div>
include("inc/header.inc.php");
?>
<?php
$reg = @$_POST['reg'];
// declaring variables to prevent errors
$fn = ""; //voornaam
$ln = ""; //achternaam
$un = ""; //gebruikersnaam
$em = ""; //Email
$em2 = ""; //Email 2
$pswd = ""; //Wachtwoord
$pswd2 = ""; //Wachtwoord 2
$d = ""; // Aanmeld datum
$u_check = ""; //controleren of gebruikersnaam bestaat
//registratie formulier
$fn = strip_tags(@$POST['fname']);
$ln = strip_tags(@$POST['lname']);
$un = strip_tags(@$POST['username']);
$em = strip_tags(@$POST['email']);
$em2 = strip_tags(@$POST['email2']);
$pswd = strip_tags(@$POST['password']);
$pswd2 = strip_tags(@$POST['password2']);
$d = date("d-m-Y");
if ($reg) {
if ($em == $em2) {
// controleren of gebruiker al bestaat
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
// tel het aantal regels waar gebruikersnaam = $un
$check = mysql_num_rows($u_check);
if ($check == 0) {
// controleer of alle velden ingevuld zijn
if ($fn && $ln && $un && $em && $em2 && $pswd && $pswd2) {
// controleer of de wachtwoorden overeenkomen
if ($pswd == $pswd2) {
// controleer of de maximum lengte van gebruikersnaam/voornaam/achternaam niet meer dan 25 tekens bevat
if (strlen($un) > 25 || strlen($fn) > 25 || strlen($ln) > 25) {
echo "Het maximale limiet voor de gebruikersnaam/voornaam/achternaam is 25 tekens";
} else {
//Controleer of de maximale lengte van het wachtwoord niet meer dan 30 tekens is en niet minder dan 5 karakters.
if (strlen($pswd) > 30 || strlen($pswd) < 5) {
echo "Uw wachtwoord moet tussen de 5 en 30 tekens langs zijn!";
} else {
//encrypt wachtwoord en wachtwoord 2 voordat ze naar de database gestuurd worden
$salt = "?ZdAJsr_3bppTE-pNYTq^XD";
$pepper = "UqwJnAMrZB$_=54GGGhHDpUiUhlNbaowWerdVBX048eZDH!@&m#&*#CZ6B&6";
$pswd = sha1(md5(sha1($salt . $pswd . $pepper)));
$pswd2 = sha1(md5(sha1($salt . $pswd2 . $pepper)));
$query = mysql_query("INSERT INTO users VALUES('','$un','$fn','$ln','$em','$pswd','$d','0')");
echo "<h2>Welkom op Socialia</h2>. Login om te beginnen ...";
}
}
} else {
echo "Uw wachtwoorden komen niet overeen";
}
} else {
echo "Niet alle velden zijn ingevuld";
}
} else {
echo "Gebruikersnaam wordt al gebruikt...";
}
} else {
echo "Uw emailadressen komen niet overeen!";
}
}
?>
<div id="join">
<h2>Join ... vandaag nog!</h2>
</div>
<div id="signup">
<h2>Meld je aan!</h2>
<form action="#" method="POST">
<table>
<tr>
<td><input type="text" name="fname" size="25" placeholder="Voornaam" /></td>
</tr>
<tr>
<td><input type="text" name="lname" size="25" placeholder="Achternaam" /></td>
</tr>
<tr>
<td><input type="text" name="username " size="25" placeholder="Gebruikersnaam" /></td>
</tr>
<tr>
<td><input type="text" name="email" size="25" placeholder="Emailadres" /></td>
</tr>
<tr>
<td><input type="text" name="email2" size="25" placeholder="Emailadres (controle)" /></td>
</tr>
<tr>
<td><input type="password" name="password" size="25" placeholder="Wachtwoord" /></td>
</tr>
<tr>
<td><input type="password" name="password2" size="25" placeholder="Wachtwoord (controle)" /></td>
</tr>
<tr>
<td><input type="submit" name="reg" value="Aanmelden" /></td>
</tr>
</table>
</form>
</div>
Gewijzigd op 28/10/2015 16:57:34 door Jack de boer
Verder mis je de underscore bij de POST-variabelen, dus wordt het:
$_POST['fname'].
Verder wou ik je even attenderen van de mysql-functies terzijde gaan in de eerst volgende PHP-versie.
Dus stap over op MySQLi of PDO.
- Ariën - op 28/10/2015 16:58:47:
Als eerste: Haal alle @'jes weg uit je script. Je wilt bij de uitvoer van het script zeker zijn dat je geen foutmeldingen in de doofpot stopt.
Verder mis je de underscore bij de POST-variabelen, dus wordt het:
$_POST['fname'].
Verder wou ik je even attenderen van de mysql-functies terzijde gaan in de eerst volgende PHP-versie.
Dus stap over op MySQLi of PDO.
Verder mis je de underscore bij de POST-variabelen, dus wordt het:
$_POST['fname'].
Verder wou ik je even attenderen van de mysql-functies terzijde gaan in de eerst volgende PHP-versie.
Dus stap over op MySQLi of PDO.
Dank voor je reactie.
Ik heb de @tjes verwijderd en de underscores toegevoegd. Dat ik dat niet gezien had is echt gewoon dom, maar het heeft het probleem helaas niet verholpen.
Dat MySQL er binnenkort uit gaat, daar ben ik van op de hoogte, dit ga ik dan ook zo snel mogelijk omzetten naar MySQLi.
Jack de boer op 28/10/2015 16:54:43:
Vraag 1: waarom sla je 2x het wachtwoord op?
Volgens mij is deze wijze van een wachtwoord beveiligen (sha1, md5 en nog een keer sha1) niet veilig (meer). Kijk bv. naar bcrypt.
:)
Obelix en Idefix op 28/10/2015 17:14:09:
Vraag 1: waarom sla je 2x het wachtwoord op?
Volgens mij is deze wijze van een wachtwoord beveiligen (sha1, md5 en nog een keer sha1) niet veilig (meer). Kijk bv. naar bcrypt.
Jack de boer op 28/10/2015 16:54:43:
Vraag 1: waarom sla je 2x het wachtwoord op?
Volgens mij is deze wijze van een wachtwoord beveiligen (sha1, md5 en nog een keer sha1) niet veilig (meer). Kijk bv. naar bcrypt.
Dat is inderdaad raar om te doen, zal het tweede wachtwoord weghalen, doe hoeft helemaal niet opgeslagen te worden. Zal kijken naar alternatieve beveiliging.
Toevoeging op 28/10/2015 19:06:11:
Thomas van den Heuvel op 28/10/2015 18:01:07:
name="username "
:)
:)
Dit is echt heel erg. Dat was het hele probleem dus en daar heb ik gewoon overheen gekeken.
Gewijzigd op 28/10/2015 19:10:27 door Jack de boer