if else schijnt niet te werken
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
105
106
107
108
109
110
111
112
113
114
115
116
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 {
}
}
?>
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 {
}
}
?>
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.