Bonjour à vous,

Je me retrouve face à un petit soucis au niveau d'une gestion d'erreur lors du changement d'adresse email et de mot de passe. Ce n'est qu'une question de logique, mais je ne vois pas comment m'y prendre.

Donc voici le problème:

J'ai un formulaire où je souhaite faire modifier mon mot de passe et adresse email, tout fonctionne, le souci étant que vu que j'ai séparé la gestion d'erreurs avec un "if" différent pour le mot de passe et l'adresse email, cela fait que lorsque l'adresse email n'a aucune erreur et que je remplis le mot de passe de manière incorrect, un message d'erreur dit que le mot de passe n'est pas correct mais ça update quand même l'adresse email tout en faisant la redirection sur /profile.
Et ça va aussi dans l'autre sens, si j'ai un bon mot de passe et une mauvaise adresse email, ça m'update le mot de passe et ça met le message d'erreur de l'adresse email tout en faisant une redirection sur /profile.

Comment faire en sorte donc pour que l'email ne s'update pas en base données tant qu'il y a un message d'erreur, que ce soit dans le mot de passe s'il est remplis ou dans l'email.

Voici le code en question:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
if (isset($_POST['validate']))
		{			
			if (!empty($email))
				{					
					$sql_verif_email = 'SELECT email FROM users WHERE email = "' . $email . '"';
					$result_verif_email = mysqli_query($mysqli, $sql_verif_email);
 
					if (empty($email) || empty($_POST['confirm_email']))
						{
							$message = '<span style="color: red">Vous devez renseigner votre nouvelle adresse email et la confirmer</span>';
						}
					else if (!preg_match('/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i', $email))
						{
							$message = '<span style="color: red">Veuillez entrer une adresse email valide</span>';
						}
					else if (preg_match('#yopmail\.com$#', $email) ||
							preg_match('#yopmail\.net$#', $email) ||
							preg_match('#yopmail\.fr$#', $email) ||
							preg_match('#brefmail\.com$#', $email) ||
							preg_match('#uggsrock\.com$#', $email) ||
							preg_match('#haltospam\.com$#', $email) ||
							preg_match('#kleemail\.com$#', $email) ||
							preg_match('#email-jetable\.eu$#', $email) ||
							preg_match('#destroy-spam\.com$#', $email) ||
							preg_match('#justonemail\.net$#', $email) ||
							preg_match('#letmymail\.com$#', $email) ||
							preg_match('#onemoremail\.net$#', $email) ||
							preg_match('#cool\.fr.nf$#', $email) ||
							preg_match('#nospam\.ze.tc$#', $email) ||
							preg_match('#nomail\.xl.cx$#', $email) ||
							preg_match('#mega\.zik.dj$#', $email) ||
							preg_match('#speed\.1s.fr$#', $email) ||
							preg_match('#courriel\.fr.nf$#', $email) ||
							preg_match('#moncourrier\.fr.nf$#', $email) ||
							preg_match('#monemail\.fr.nf$#', $email) ||
							preg_match('#monmail\.fr.nf$#', $email) ||
							preg_match('#filzmail\.com$#', $email) ||
							preg_match('#kleemail\.com$#', $email) ||
							preg_match('#email-jetable\.eu$#', $email) ||
							preg_match('#destroy-spam\.com$#', $email) ||
							preg_match('#trash-mail\.com$#', $email) ||
							preg_match('#mail-temporaire\.fr$#', $email) ||
							preg_match('#tempomail\.fr$#', $email) ||
							preg_match('#pjjkp\.com$#', $email) ||
							preg_match('#mail\.ru$#', $email) ||
							preg_match('#keepmymail\.com$#', $email) ||
							preg_match('#0-mail\.com$#', $email) ||
							preg_match('#jnxjn\.com$#', $email) ||
							preg_match('#mailincubator\.com$#', $email))
						{
							$message = '<span style="color: red">Les adresses email temporaires sont interdites</span>';
						}
					else if (isset($email) == mysqli_num_rows($result_verif_email))
						{
							$message = '<span style="color: red">Cette adresse email existe déjà</span>';
						}
					else if ($email != $_POST['confirm_email'])
						{
							$message = '<span style="color: red">Les adresses email ne sont pas identiques</span>'; 
						}
					else
						{
							mysqli_query($mysqli, 'UPDATE users SET email = "' . $email . '" WHERE email = "' . $_SESSION['email'] . '"');
							$_SESSION['email'] = $email;
						}
				}
 
			if (!empty($password))
				{					
					$salt = '42_toto_42';
					$password = isset($_POST['password']) ? hash('sha256', $salt . $_POST['password']) : '';
 
					$new_password = isset($_POST['new_password']) ? hash('sha256', $salt . $_POST['new_password']) : '';
 
					if (empty($password) || empty($_POST['new_password']) || empty($_POST['confirm_new_password']))
						{
							$message = '<span style="color: red">Vous devez renseigner votre ancien mot de passe, un nouveau mot de passe et le confirmer</span>';
						}
					else if ($password != $data_my_select['password'])
						{
							$message = '<span style="color: red">Votre ancien mot de passe est incorrect</span>'; 
						}
					else if (strlen($_POST['new_password']) <= 4)
						{
							$message = '<span style="color: red">Votre mot de passe doit comprter 5 caractères au minimum</span>';
						}
					else if ($_POST['new_password'] == $data_my_select['password'])
						{
							$message = '<span style="color: red">Votre nouveau mot de passe doit être différent de votre ancien mot de passe</span>';
						}
					else if ($_POST['new_password'] != $_POST['confirm_new_password'])
						{
							$message = '<span style="color: red">Vos mots de passe ne sont pas identiques</span>'; 
						}
					else
						{
							mysqli_query($mysqli, 'UPDATE users SET password = "' . $new_password . '" WHERE email = "' . $_SESSION['email'] . '"');
						}
				}
			if (!isset($message))
				{										
					$success = '<span style="color: green">Vos informations ont été éditées. Vous allez être redirigé vers votre profil dans quelques secondes.<br/>
					Ou bien, cliquez <a href="/profile">ici</a></span>';
					header("Refresh: 1; URL=/profile");
				}
		}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<?php if (isset($message)) { echo $message; } else if (isset($success)) { echo $success; } ?>
							<h2>Modifier votre email:</h2>
							<span class="label_account">Votre email</span><?php echo htmlentities($data_my_select['email']); ?><br /><br />
							<span class="label_account">Votre nouvel email</span><input type="text" name="email" autocomplete="off" class="edit_input" style="width: 240px;" /><br /><br />
							<span class="label_account">Confirmer votre nouvel email</span><input type="text" name="confirm_email" autocomplete="off" class="edit_input" style="width: 240px;" /><br /><br />
							<h2>Changer votre mot de passe:</h2>
							<span class="label_account">Ancien mot de passe</span><input type="password" name="password" autocomplete="off" class="edit_input" style="width: 240px;" /><br /><br />
							<span class="label_account">Nouveau mot de passe</span><input type="password" name="new_password" autocomplete="off" class="edit_input" style="width: 240px;" /><br /><br />
							<span class="label_account">Confirmer le mot de passe</span><input type="password" name="confirm_new_password" autocomplete="off" class="edit_input" style="width: 240px;" /><br /><br />
							<input type="submit" style="position: absolute; margin-left: 400px; margin-top: 180px;" name="validate" value="Enregistrer les modifications" class="btnSport_share" /><br />

Au plaisir de vous lire.