if else schijnt niet te werken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java developer met testervaring

Java developer met testervaring Functieomschrijving "De drempel tussen de burger en de Belastingdienst zo laag mogelijk houden: dat is de belangrijke taak van ons team. Dit doen we door het burgerportaal Mijn Belastingdienst continu te verbeteren." René, Java-specialist bij de Belastingdienst. De keten Interactie is een samenwerkingsverband van alle dienstonderdelen binnen de Belastingdienst. Samen zorgen we dat het contact met burgers en bedrijven goed kan plaatsvinden. Onze belangrijkste opgave? Zoveel mogelijk digitaliseren. Dat doen we binnen het onderdeel Informatievoorzieningen (IV), de ICT-organisatie van de Belastingdienst. Denk bij de producten die IV-Interactie ontwikkelt en onderhoudt aan portalen, formulieren en authenticatie- en

Bekijk vacature »

James C

James C

17/08/2021 16:38:54
Quote Anchor link
Ik heb een script gemaakt waarmee een gebruiker (na inloggen) zijn wachtwoord kan wijzigen. Het gaat echt niet helemaal goed met mijn if en else. Het wachtwoord wordt nu gewijzigd ook al is het oude wachtwoord niet goed ingevuld en ook al zijn de nieuwe wachtwoorden niet gelijk aan elkaar. Ik zie even door de bomen het bos niet meer maar wat gaat er mis?

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
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
<?php include('connect.php');

error_reporting(E_ALL);
error_reporting(-1);
ini_set('error_reporting', E_ALL);
ini_set('error_log', 'error.log');

    global $wrongPwdErr, $accountNotExistErr, $emailPwdErr, $email_empty_err, $pass_empty_err;

    if(isset($_POST["submit"]))
    {

        $oudwachtwoord     = $_POST['oudwachtwoord'];
        $nieuwwachtwoord     = $_POST['nieuwwachtwoord'];
        $nieuwwachtwoordcontrole     = $_POST['nieuwwachtwoordcontrole'];

        // clean data
        $pswdoud = mysqli_real_escape_string($connection, $oudwachtwoord);
        $pswdnieuw = mysqli_real_escape_string($connection, $nieuwwachtwoord);
        $pswdnieuwcontrole = mysqli_real_escape_string($connection, $nieuwwachtwoordcontrole);

        // get from session
        $email = $_SESSION['email'];

        // Query if email exists in db
        $sql = "SELECT wachtwoord, is_active From gebruikers WHERE email = '{$email}' ";
        $query = mysqli_query($connection, $sql);
        $rowCount = mysqli_num_rows($query);

        // If query fails, show the reason
        if(!$query){
           die("SQL query failed: " . mysqli_error($connection));
        }

        
        // Fetch user data
        while($row = mysqli_fetch_array($query)) {
            $pass_word = $row['wachtwoord'];
            $is_active = $row['is_active'];
        }



          // Verify password

            if (password_verify($oudwachtwoord, $pass_word)) {
                $password = password_verify($oudwachtwoord, $pass_word);

            }
else {
                $status = "NOTOK";
                $foutoudwachtwoord = '<div class="alert alert-danger">
                Het huidige wachtwoord klopt niet. '
.$status.'
                </div><br>'
;
            }


            if ($pswdnieuw == $pswdnieuwcontrole) {

            }
else {
                $status = "NOTOK";
                $wachtwoordnietgelijk = '<div class="alert alert-danger">
                                         De nieuwe wachtwoorden komen niet overeen. '
.$status.'
                                         </div><br>'
;
             }

      
            if(preg_match("/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,30}$/", $pswdnieuw)) {

            }
else {
                $status = "NOTOK";
                $wrongPwdErr = '<div class="alert alert-danger">
                        Wachtwoord moet tussen de 8 en 30 karakters zijn met een hoofdletter, kleine letter en een cijfer. '
.$status.'
                    </div>'
;
            }


            // Check if email exist
            if($rowCount <= 0) {
                $status = "NOTOK";
                $accountNotExistErr = '<div class="alert alert-danger">
                        Onjuiste gegevens, probeer opnieuw. '
.$status.'
                    </div><br>'
;
            }
else {
                $status = "OK";
            }


      
            
            if ($status == "OK")
            {

                // Allow only active user
                if($is_active == '1')
                    {

                    
                    $password_hash = \password_hash($password, PASSWORD_ARGON2ID);

                        // Query
                        $sql2 = "UPDATE gebruikers SET wachtwoord = '{$password_hash}' WHERE email = '{$email}' ";
                        
                        // Create mysql query
                        $sqlQuery = mysqli_query($connection, $sql2);

                        $success_msg = '<br><div class="alert alert-danger">Het wachtwoord is gewijzigd! '.$status.'<br></div>';
                        
                            if(!$sqlQuery)
                            {

                                die("MySQL query failed!" . mysqli_error($connection));
                            }

                    }

                    else {
                          $emailPwdErr = '<div class="alert alert-danger">
                                         Dit account is niet meer actief.
                                        </div><br>'
;
                        }
            }

            else {

            }

    }

?>
 
PHP hulp

PHP hulp

19/10/2021 01:19:18
 
Adoptive Solution

Adoptive Solution

17/08/2021 18:26:34
Quote Anchor link
De volgorde van controleren klopt niet.

Je SELECT een record maar je controleert niet of dat werkelijk bestaat.

Je controleert vervolgens de wachtwoorden en geeft zonodig een $status NOTOK.

Pas op regel 72 controleer je daadwerkelijk of het record voorkomt.
Zo ja, dan $status OK.

Die $status gebruik je om het record bij te werken op regel 83, ongeacht de wachtwoordcontroles.

Op regel 89 doe je een passwordhash van $password in plaats van $pswdnieuw.
(De \ zou een php foutmelding moeten geven.)

Het record wordt bijgewerkt als ook $is_active = 1.

Echter, op regel 44 geef je de waarde TRUE aan $password als $oudwachtwoord correct is.
Password-verify geeft TRUE of FALSE.

Derhalve zal op regel 89 een hash worden gemaakt van TRUE of FALSE en niet van het nieuwe wachtwoord.

De $is_active status zou je al met de SELECT kunnen doen.
 



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.