changepassword.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /******************************************************************************
  3. * On démarre la session
  4. */
  5. session_start();
  6. // On reset les messages
  7. unset($_SESSION['message']);
  8. /******************************************************************************
  9. * On vérifie que l'utilisateur est connecté
  10. */
  11. if ( !isset($_SESSION['user']) )
  12. {
  13. header('Location: signin.php');
  14. exit();
  15. }
  16. /******************************************************************************
  17. * On vérifie que la méthode HTTP utilisée est bien POST
  18. */
  19. if ($_SERVER['REQUEST_METHOD'] != 'POST')
  20. {
  21. header('Location: formpassword.php');
  22. exit();
  23. }
  24. // On vérifie qu'on a bien reçu les données en POST
  25. if ( !isset($_POST['newpassword'],$_POST['confirmpassword']) )
  26. {
  27. $_SESSION['message'] = "Some POST data are missing.";
  28. header('Location: formpassword.php');
  29. exit();
  30. }
  31. // On les sécurise les données POST.
  32. $login = $_SESSION['user'];
  33. $newpassword = htmlspecialchars($_POST['newpassword']);
  34. $confirmpassword = htmlspecialchars($_POST['confirmpassword']);
  35. // On s'assure que les 2 mts de passes corrspondent
  36. if ( $newpassword != $confirmpassword )
  37. {
  38. $_SESSION['message'] = "Error: passwords are different.";
  39. header('Location: formpassword.php');
  40. exit();
  41. }
  42. /******************************************************************************
  43. * On inclut le fichier contenant les informations de connexion à la BDD
  44. */
  45. require_once('models/User.php');
  46. //On crée l'utilisateur
  47. $user = new User($login);
  48. try {
  49. $user->changePassword($newpassword);
  50. }
  51. catch (PDOException $e) {
  52. // Si erreur lors de la création de l'objet PDO
  53. // (déclenchée par MyPDO::pdo())
  54. $_SESSION['message'] = $e->getMessage();
  55. header('Location: formpassword.php');
  56. exit();
  57. }
  58. catch (Exception $e) {
  59. // Si erreur durant l'exécution de la requête
  60. // (déclenchée par le throw de $user->changePassword())
  61. $_SESSION['message'] = $e->getMessage();
  62. header('Location: formpassword.php');
  63. exit();
  64. }
  65. /******************************************************************************
  66. * Si tout est ok, on retourne sur welcome.php
  67. */
  68. $_SESSION['message'] = "Password successfully updated.";
  69. header('Location: welcome.php');
  70. exit();