1
0

changepasswd.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. session_start();
  3. function passwd_error($message) {
  4. $_SESSION['message'] = $message;
  5. header('Location: formpasswd.php');
  6. exit();
  7. }
  8. if (!isset($_SESSION['user'])) {
  9. header('Location: signin.php');
  10. exit();
  11. }
  12. if ($_SERVER['REQUEST_METHOD'] != 'POST') {
  13. header('Location: signin.php');
  14. exit();
  15. }
  16. if (!isset($_POST['password_current'], $_POST['password'], $_POST['password_conf'])) {
  17. header('Location: signin.php');
  18. exit();
  19. }
  20. $passwd = $_POST['password'];
  21. $passwd_conf = $_POST['password_conf'];
  22. $current_password = $_POST["password_current"];
  23. if ($passwd != $passwd_conf) {
  24. passwd_error("Passwords do not match");
  25. }
  26. if (strlen($passwd) < 8) {
  27. passwd_error("Password too short (min 8 chars)");
  28. }
  29. $ini = parse_ini_file('includes/config.ini');
  30. try {
  31. $ldapconn = ldap_connect($ini['hostname'], $ini['port']);
  32. ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
  33. ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
  34. } catch (Exception $e) {
  35. die ('ERROR: ' . $e->getMessage());
  36. }
  37. $dn = "uid=" . ldap_escape($_SESSION['user']) . ',' . $ini["basedn"];
  38. $ldap_bind = @ldap_bind($ldapconn, $dn, $current_password);
  39. if ($ldap_bind) {
  40. if (ldap_exop_passwd($ldapconn, $dn, "",$passwd)) {
  41. header('Location: home.php');
  42. exit();
  43. } else {
  44. passwd_error("A problem occured, contact admins");
  45. }
  46. } else {
  47. passwd_error("Wrong current password");
  48. }