if else schijnt niet te werken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

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

22/12/2024 07:06:01
 
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.