Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana hasła dla usera tyko po podaniu starego
Forum PHP.pl > Forum > PHP
Balu90
A więc mam taki problem:
Chcę, aby użyszkodnik miał możliwość zmiany swojego hasła tylko po podaniu poprzedniego, które przedtem miał zapisane w Bazie Danych.
Jak na razie wydziergałem coś takiego, ale nadal z działaniem ma to niewiele wspólnego sad.gif
Kod przedstawia się następująco:
  1. <?
  2. if(!$_SESSION['userid']) header("Location: login.php");
  3. include("html_header.php");
  4. $tpl = new HTML_Template_IT("./templates");
  5. $tpl->loadTemplatefile("profile.tpl", true, true);
  6. db_connect();
  7. $userid = $_SESSION['userid'];
  8. if ($_POST['pwd'] || $_POST['pwd2'] || $_POST['email']) {
  9. $sql = "SELECT password FROM user WHERE userid=$userid";
  10. $do_query = mysql_query($sql) or die(mysql_error());
  11. $data = mysql_fetch_row($do_query);
  12. $old_password_db = $data[0];
  13. //echo $old_password_db."&nbsp;";
  14. $sql = "SELECT password('".$_POST['old_pwd']."')";
  15. $do_query = mysql_query($sql) or die("1");
  16. $data = mysql_fetch_row($do_query);
  17. $old_password_form = $data[0];
  18. //echo $old_password_form;
  19.  
  20. if($_POST['pwd']= $_POST['pwd2']){
  21. // i tu chodzi o to, żeby hasło z formularza było identyczne z hasłem z db, ale mi
     to nie działa :(
  22. if($old_password_form = $old_password_db) {
  23. $sql = "SELECT password('".$_POST['pwd']."')";
  24. $do_query = mysql_query($sql) or die(__LINE__.mysql_error());
  25. $data = mysql_fetch_row($do_query);
  26. $new_password = $data[0];
  27. $sql = "SELECT password FROM user WHERE userid=$userid";
  28. $do_query = mysql_query($sql) or die(mysql_error());
  29. $data = mysql_fetch_row($do_query);
  30. $old_password = $data[0];
  31. if ($new_password != $old_password) {
  32.  $sql = "UPDATE user SET password = password('".$_POST['pwd']."') WHERE userid = $userid";
  33.  $do_query = mysql_query($sql) or die(__LINE__.mysql_error());
  34. }
  35. }
  36. }
  37. else if ($_POST['email']) {
  38. $sql = "SELECT email FROM user WHERE userid = $userid";
  39. $do_query = mysql_query($sql) or die(__LINE__.mysql_error());
  40. $data = mysql_fetch_row($do_query);
  41. $old_email = $data[0];
  42. $new_email = htmlspecialchars(addslashes($_POST['email']));
  43. //echo $new_email;
  44. if ($old_email != $new_email) {
  45. $sql = "UPDATE user SET email = '".$new_email."' WHERE userid = $userid";
  46. echo $sql;
  47. $do_query = mysql_query($sql) or die(mysql_error());
  48. }
  49. }
  50. ?>


Czy ktoś mógłby mi pomóc w poprawie tego?
L_Devil
Linijka 24
powinno być:
  1. <?php
  2. if($old_password_form == $old_password_db) {
  3. ?>

(dwa znaki == zamiast jednego smile.gif )

W 21 linijce to samo
  1. <?php
  2. if($_POST['pwd']== $_POST['pwd2']){
  3. ?>


= - przypisanie
== - porównanie

I na przyszłość stosuj lepsze formatowanie kodu, bo naprawdę ciężko się tutaj połapać co i jak
Balu90
Dziękuję bardzo L-Devil, pomogło

Jeszcze raz wielkie dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.