Update d'une BDD (MySQL)
Résolu
Mouch89
Messages postés
109
Date d'inscription
Statut
Membre
Dernière intervention
-
Mouch89 Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Mouch89 Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai dans dans le script d'une de mes pages le code suivant :
L'idée, c'était de pouvoir changer le mdp du membre en question, quand il le désire. Le problème, c'est que cela ne marche pas :)
Et pourtant... on m'affiche bien le message de réussite, ce qui veut dire que le script est passé sur ma requete sans retourner d'erreur !
Le pire, c'est que j'ai presque le même code pour un code qui doit permettre aux membres de changer leur mail... et ce code fonctionne très bien :x
Je demande donc un peu d'aide, je trouve pas mon erreur ! Vient-elle de la fonction hacher ? (c'est un mix md5, sha1 le tout salé... mais bon, les inscriptions et les connexions passent très bien avec donc je vois pas pourquoi ça poserait pb au changement de mot de passe...)
Merci pour votre aide et bonne journée.
J'ai dans dans le script d'une de mes pages le code suivant :
try { $req = $bdd->prepare('UPDATE membres SET pass = ? WHERE pseudo = ?'); $req->execute(array(hacher($_POST['mdp']), $_SESSION['pseudo'])); $req->closeCursor(); $reussite = 'Le chagement de mot de passe a eu lieu. Vous pouvez dès maintenant utiliser votre nouveau mot de passe.'; } catch(Exception $e) { // En cas d'erreur précédemment, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); }
L'idée, c'était de pouvoir changer le mdp du membre en question, quand il le désire. Le problème, c'est que cela ne marche pas :)
Et pourtant... on m'affiche bien le message de réussite, ce qui veut dire que le script est passé sur ma requete sans retourner d'erreur !
Le pire, c'est que j'ai presque le même code pour un code qui doit permettre aux membres de changer leur mail... et ce code fonctionne très bien :x
Je demande donc un peu d'aide, je trouve pas mon erreur ! Vient-elle de la fonction hacher ? (c'est un mix md5, sha1 le tout salé... mais bon, les inscriptions et les connexions passent très bien avec donc je vois pas pourquoi ça poserait pb au changement de mot de passe...)
Merci pour votre aide et bonne journée.
A voir également:
- Update d'une BDD (MySQL)
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Mysql community server - Télécharger - Bases de données
- Wsus offline update - Télécharger - Systèmes d'exploitation
4 réponses
salut, tu peux mettre tous le code du fichier, notamment quant tu déclare PDO, et puis tu ouvre bien ta session dans ce fichier???
C'est encore du local :)
Mais oui, je peux vous en mettre un peu plus !
(c'est assez illisible, désolé :p)
Ca suffit ? J'ai encore du HTML, quelques formulaires, etc en dessous mais je pense pas que ça vous intéresse :)
Mais oui, je peux vous en mettre un peu plus !
(c'est assez illisible, désolé :p)
<?php session_start(); $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=xxxxx', 'root', '', $pdo_options); function hacher($pass) { $prefixe = 'xxxxxxxxxxxxxxxxxxxxxx'; $suffixe = 'xxxxxxxxxxxxxxxxxxxxxx'; //on hache (avec un mix md5, sha1) après avoir salé. impossible maintenant de retrouver les mots de passe d'origine (sans avoir le code source en tout cas) $pass = md5(sha1($prefixe).$pass.sha1($suffixe)); return $pass; } if (isset($_POST['paypal']) && isset($_POST['verifpaypal'])) { if (($_POST['paypal'] == '') || ($_POST['verifpaypal'] == '')) $erreur = 'Le changement d\'adresse a échoué. Au moins un des champs est vide.'; else { if($_POST['paypal'] != $_POST['verifpaypal']) $erreur = 'Le changement d\'adresse a échoué. Les adresses mail ne sont pas identiques.'; else { if(!(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['paypal']))) $erreur = 'Le changement d\'adresse a échoué. Votre adresse mail n\'est pas valide.'; else { try { $req = $bdd->prepare('UPDATE membres SET mail_paypal = ? WHERE pseudo = ?'); $req->execute(array($_POST['paypal'], $_SESSION['pseudo'])); $req->closeCursor(); $reussite = 'La chagement d\'adresse sera effectif dès que vous cliquerez sur le lien de validation que vous avez allez recevoir par mail dans quelques instants.'; } catch(Exception $e) { // En cas d'erreur précédemment, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } } } } } else if (isset($_POST['mdp']) && isset($_POST['nouvmdp']) && isset($_POST['verifnouvmdp'])) { if (($_POST['mdp'] == '') || ($_POST['nouvmdp'] == '') || ($_POST['verifnouvmdp'] == '')) $erreur = 'Le changement de mot de passe a échoué. Au moins un des champs est vide.'; else { if($_POST['nouvmdp'] != $_POST['verifnouvmdp']) $erreur = 'Le changement de mot de passe a échoué. Le nouveau mot de passe et sa vérification ne sont pas identiques.'; else { try { $req = $bdd->prepare('SELECT pass FROM membres WHERE pseudo= ?'); $req->execute(array($_SESSION['pseudo'])); $donnees = $req->fetch(); $req->closeCursor(); } catch(Exception $e) { // En cas d'erreur précédemment, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } if (strlen($_POST['mdp']) < 6) $erreur = 'Le changement de mot de passe a échoué. Votre nouveau mot de passe est trop court. Comptez un minimum de 6 caractères'; else{ if($donnees['pass'] != hacher($_POST['mdp'])) $erreur = 'Le changement de mot de passe a échoué. Le mot de passe actuel rentré est incorrect.'; else { try { $req = $bdd->prepare('UPDATE membres SET pass = ? WHERE pseudo = ?'); $req->execute(array(hacher($_POST['mdp']), $_SESSION['pseudo'])); $req->closeCursor(); $reussite = 'Le chagement de mot de passe a eu lieu. Vous pouvez dès maintenant utiliser votre nouveau mot de passe.'; } catch(Exception $e) { // En cas d'erreur précédemment, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } } } } } } ?>
Ca suffit ? J'ai encore du HTML, quelques formulaires, etc en dessous mais je pense pas que ça vous intéresse :)
Après avoir mis des echo un peu partout, je crois que le pb vient de ma fonction hacher...
Visiblement, tout les retours de cette fonction donnent la même chaine de 32 caractères... étrange ?
Visiblement, tout les retours de cette fonction donnent la même chaine de 32 caractères... étrange ?