IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème gestion d'erreurs [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Points : 51
    Points
    51
    Par défaut Problème gestion d'erreurs
    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.

  2. #2
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    tu aura avantage a simplifier par exemple :
    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
    $Erreur="" ; 
     
    if(
       /*test1 email incorrect*/
      )
      { $Erreur.="email incorrect<br/>" ; };
    if(
       /*test2 email incorrect*/
      )
      { $Erreur.="email incorrect<br/>" ; };
    ...
    if(
      /*test password incorrect*/
      )
      { $Erreur.="password incorrect<br/>" ; };
     
     
    if($Erreur=="")
    {
      /* pas d'erreur , update etc... */
      ...
    }else{
      /* affichage du message */
      echo $Erreur;
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Ah super,

    ça fonctionne bien, merci.

    Par contre, il ne trouve pas $Erreur, il dit que c'est pas défini car je mets mon php avant et je définis $Erreur dans l'html en bas du php.

    Tu vois comment faire ?

    Edit: Problème résolu, merci bien !

    Bonne journée.

  4. #4
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    tu met
    en haut de ton code
    si besoin tu ajoute les balises pour le php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
     $Erreur="" ; 
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Problème] Gestion d'erreur avec MINA
    Par reben dans le forum Général Java
    Réponses: 8
    Dernier message: 08/03/2015, 21h37
  2. Problème gestion d'erreur
    Par jt06diy dans le forum Débuter
    Réponses: 1
    Dernier message: 25/09/2014, 08h02
  3. [AC-2010] Probléme Gestion d'erreur
    Par dodo28 dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/09/2012, 09h56
  4. Problèmes gestion des erreurs
    Par <Zer0> dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 01/09/2007, 16h12
  5. problème de gestion d'erreurs
    Par champijulie dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/05/2005, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo