Error in array
Al een tijdje ben ik aan het proberen inlogsysteem te maken. En het formulier vul je je e-mailadres en wachtwoord in en al laatst herhaal je wachtwoord. In het php gedeelte check ik eerst of de data gewenst is (niet leeg, wachtwoorden zijn hetzelfde, email is valid en wachtwoord is langer dan 10 karakters). Als dat niet zo is wil ik een ze in een array stoppen en later dan allemaal apart displayen. Ik krijg nu echter alleen de eerste error die er ontstaat. Kan iemand mij helpen?
Het volgende heb ik in het php gedeelte:
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
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
<?php
$error = array();
if(isset($_POST['signup-verzend'])){
//formulier data
$emailgb = $_POST['mail'];
$wwgb = $_POST['ww'];
$wwgbhh = $_POST['wwhh'];
// checken voor fouten in invoer nu:
// kijken of e-mail niet leeg is
if(empty($emailgb)) {
array_push($error, "The email field is empty");
}
//kijken of wachtwoord niet ingevuld is
elseif(empty($wwgb)) {
array_push($error, "The password field is empty");
}
//kijken of wachtwoordherhaal niet ingevuld is
elseif(empty($wwgbhh)) {
array_push($error, "The password reapeat field is empty. You must fill this in for extra security");
}
//kijken of de twee ww hetzelfde zijn
elseif($wwgb !== $wwgbhh) {
array_push($error, "The two password do not match");
}
//kijken of het wachtwoord lang genoeg is
elseif(strlen($wwgb) < 9) {
array_push($error, "Your password is too short. It must be larger than 10");
}
//kijken of het een geldig e-mail adres is
elseif(!filter_var($emailgb, FILTER_VALIDATE_EMAIL)) {
array_push($error, "The filled in email is not valid");
}
else{
//stuur mail met bevestiging
....
}
}
[/code]
Het volgende in het html gedeelte:
[code]
<form action="" method="post">
<input type="text" name="mail" placeholder="E-mail">
<input type="password" name="ww" placeholder="Password">
<input type="password" name="wwhh" placeholder="Repeat password">
<button type="submit" name="signup-verzend">Sign up</button>
</form>
<br>
[code]<?php
if(count($error) > 0){
?>
<div class="error">
<?php
foreach ($error as $fout){
?>
<?php echo $fout; ?><br />
<?php
}
?>
</div>
<?php
}else{
?>
<p> We recommend to add also numbers and one of the following characters in your password (?!@#$%&*,.;) </p>
<?php
}
?>
</div>
$error = array();
if(isset($_POST['signup-verzend'])){
//formulier data
$emailgb = $_POST['mail'];
$wwgb = $_POST['ww'];
$wwgbhh = $_POST['wwhh'];
// checken voor fouten in invoer nu:
// kijken of e-mail niet leeg is
if(empty($emailgb)) {
array_push($error, "The email field is empty");
}
//kijken of wachtwoord niet ingevuld is
elseif(empty($wwgb)) {
array_push($error, "The password field is empty");
}
//kijken of wachtwoordherhaal niet ingevuld is
elseif(empty($wwgbhh)) {
array_push($error, "The password reapeat field is empty. You must fill this in for extra security");
}
//kijken of de twee ww hetzelfde zijn
elseif($wwgb !== $wwgbhh) {
array_push($error, "The two password do not match");
}
//kijken of het wachtwoord lang genoeg is
elseif(strlen($wwgb) < 9) {
array_push($error, "Your password is too short. It must be larger than 10");
}
//kijken of het een geldig e-mail adres is
elseif(!filter_var($emailgb, FILTER_VALIDATE_EMAIL)) {
array_push($error, "The filled in email is not valid");
}
else{
//stuur mail met bevestiging
....
}
}
[/code]
Het volgende in het html gedeelte:
[code]
<form action="" method="post">
<input type="text" name="mail" placeholder="E-mail">
<input type="password" name="ww" placeholder="Password">
<input type="password" name="wwhh" placeholder="Repeat password">
<button type="submit" name="signup-verzend">Sign up</button>
</form>
<br>
[code]<?php
if(count($error) > 0){
?>
<div class="error">
<?php
foreach ($error as $fout){
?>
<?php echo $fout; ?><br />
<?php
}
?>
</div>
<?php
}else{
?>
<p> We recommend to add also numbers and one of the following characters in your password (?!@#$%&*,.;) </p>
<?php
}
?>
</div>
Met elseif kom je steeds maar op een keuze uit. Je zult dan if'jes moeten hebben.
Bij "acties" moet je denken aan enkelvoudige taken die een website kan verrichten:
- het weergeven van een registratieformulier (en eventueel na terugkomst na een verwerking die mislukt omdat de invoer niet lukte)
- het verwerken van het formulier
- een overzichtspagina na afloop
Als je dit echt in verschillende acties opdeelt dan heeft de webpagina/browser in principe geen weet van de pagina waar deze vandaan komt. Om in dat geval informatie over verschillende pagina's te onthouden zou je sessies kunnen gebruiken.
Het is ook gebruikelijk dat je na een POST (dus na afloop van de verwerking van het formulier) meteen redirect. Anders zou men deze POST-pagina kunnen verversen en dan begint je browser te emmeren of de informatie nogmaals verwerkt dient te worden. Als je je bedient van het POST/redirect/GET patroon heb je dit probleem niet.
En als dit het begin is van een website dan zou je dus ook over de structuur/opbouw van pagina's na kunnen gaan denken. Het opdelen in eenvoudige acties lijkt mij een goede start.
Wellicht wil je ook controleren of het e-mailadres al aanwezig is in de database. Als dit het identificerende attribuut in je database is wil je waarschijnlijk niet meerdere keren hetzelfde e-mailadres onder verschillende accounts opslaan.
- Ariën - op 25/04/2020 23:38:50:
Met elseif kom je steeds maar op een keuze uit. Je zult dan if'jes moeten hebben.
Aahhh natuurlijk, dankjewel! Het werkt nu :)
Meer dan 10 (tekens)?
of strlen() < 9
Bij 8 tekens, zeg je dus dat het langer dan 10 zijn.
Maar als het er 9 of 10 is, zeg je er niets over.
Ivo P op 26/04/2020 17:56:59:
hoe lang moet dat password nou zijn?
Meer dan 10 (tekens)?
of strlen() < 9
Bij 8 tekens, zeg je dus dat het langer dan 10 zijn.
Maar als het er 9 of 10 is, zeg je er niets over.
Meer dan 10 (tekens)?
of strlen() < 9
Bij 8 tekens, zeg je dus dat het langer dan 10 zijn.
Maar als het er 9 of 10 is, zeg je er niets over.
Hi Ivo, ik wil kleiner dan 10. Dus dat 10 ook goed is. Dus er moet inderdaad " strlen() < 10" staan. Dankjewel!
En dan moet de tekst van de melding dus ook aangepast worden ("larger than 10")
Sem Bakker op 26/04/2020 18:14:23:
Hi Ivo, ik wil kleiner dan 10. Dus dat 10 ook goed is. Dus er moet inderdaad " strlen() < 10" staan. Dankjewel!
Ivo P op 26/04/2020 17:56:59:
hoe lang moet dat password nou zijn?
Meer dan 10 (tekens)?
of strlen() < 9
Bij 8 tekens, zeg je dus dat het langer dan 10 zijn.
Maar als het er 9 of 10 is, zeg je er niets over.
Meer dan 10 (tekens)?
of strlen() < 9
Bij 8 tekens, zeg je dus dat het langer dan 10 zijn.
Maar als het er 9 of 10 is, zeg je er niets over.
Hi Ivo, ik wil kleiner dan 10. Dus dat 10 ook goed is. Dus er moet inderdaad " strlen() < 10" staan. Dankjewel!
Dus 10 is dan niet goed.