Error in array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sem Bakker

Sem Bakker

25/04/2020 23:23:19
Quote Anchor link
Beste mensen,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
 
PHP hulp

PHP hulp

08/05/2021 12:46:35
 
- Ariën -
Beheerder

- Ariën -

25/04/2020 23:38:50
Quote Anchor link
Met elseif kom je steeds maar op een keuze uit. Je zult dan if'jes moeten hebben.
 
Thomas van den Heuvel

Thomas van den Heuvel

26/04/2020 00:53:06
Quote Anchor link
En als je deze stappen wat beter wilt organiseren splits je deze op in verschillende acties.

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.
 
Sem Bakker

Sem Bakker

26/04/2020 10:58:06
Quote Anchor link
- 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 :)
 
Ivo P

Ivo P

26/04/2020 17:56:59
Quote Anchor link
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.
 
Sem Bakker

Sem Bakker

26/04/2020 18:14:23
Quote Anchor link
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.


Hi Ivo, ik wil kleiner dan 10. Dus dat 10 ook goed is. Dus er moet inderdaad " strlen() < 10" staan. Dankjewel!
 
Ivo P

Ivo P

26/04/2020 18:47:28
Quote Anchor link
En dan moet de tekst van de melding dus ook aangepast worden ("larger than 10")
 
- Ariën -
Beheerder

- Ariën -

26/04/2020 18:52:17
Quote Anchor link
Sem Bakker op 26/04/2020 18:14:23:
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.


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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.