Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Formularz "zmiana hasła", wyrzuca błąd starego hasła
inomi13
post 16.08.2017, 10:02:01
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


Oto kod formularza zmiany hasła, jednak non stop pojawia się "Błędne stare hasło" oraz dwa błędny jak poniżej:

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp\htdocs\projekt\zmiana_hasla.php on line 41

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\projekt\zmiana_hasla.php on line 42

  1.  
  2. <?php
  3.  
  4.  
  5. if(isset($_POST['ok']))
  6. {
  7.  
  8. $wszystko_OK=true;
  9.  
  10. $haslo1 = $_POST['haslo1'];
  11. $haslo2 = $_POST['haslo2'];
  12. $haslo3 = $_POST['haslo3'];
  13.  
  14. if((strlen($haslo1)<8) || (strlen($haslo1)>20))
  15. {
  16. $wszystko_OK=false;
  17. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  18. }
  19. else
  20. {
  21. if((strlen($haslo2)<8) || (strlen($haslo2)>20))
  22. {
  23. $wszystko_OK=false;
  24. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  25. }
  26. else
  27. {
  28. if((strlen($haslo3)<8) || (strlen($haslo3)>20))
  29. {
  30. $wszystko_OK=false;
  31. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  32. }
  33. else
  34. {
  35. if($haslo1 && $haslo2 && $haslo3)
  36. {
  37. if($haslo2==$haslo3)
  38. {
  39. $szukanie = "SELECT * FROM users WHERE nick='".$_SESSION['user']."'";
  40. $szukanie_wyk = mysqli_query($szukanie);
  41. $wiersz=mysqli_fetch_assoc($szukanie_wyk);
  42. $nowe=md5($haslo2);
  43. $stare=md5($haslo1);
  44. if($haslo1==$wiersz['pass']) {
  45. $update = "UPDATE users SET pass='".$haslo2."' WHERE nick='".$_SESSION['user']."'";
  46. $update_wyk = mysqli_query($update);
  47. mysqli_error();
  48. }
  49. else
  50. {
  51. $wszystko_OK=false;
  52. $_SESSION['e_haslo1']="Błędne stare hasło";
  53. }}
  54. else
  55. {
  56. $wszystko_OK=false;
  57. $_SESSION['e_haslo2']="Podane hasła się nie zgadzają";
  58. }
  59. }
  60. }}
  61. }
  62. }
  63. ?>
  64. <!DOCTYPE HTML>
  65. <html lang="pl">
  66. <head>
  67. <meta charset="utf-8" />
  68. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  69. <title>Projekt</title>
  70. <link rel="stylesheet" href="style/style.css" type="text/css" />
  71. <style>
  72. .error
  73. {
  74. color:#cc0000;
  75. margin-top: 10px;
  76. margin-bottom: 1px;
  77. }
  78. </style>
  79. </head>
  80. <body><center><br><br><div id="logo">
  81. <img src="img/logo.png" align="center"/ ></div>
  82. <div id="container2" align="center">
  83. <form method="post">
  84.  
  85.  
  86. Twój login to</b></td> <td><b>: </b></td> <td><b><?php echo($_SESSION['user']); ?></b></td><br><br>
  87.  
  88. Stare hasło: <br /> <input type="password" name="haslo1" /><br />
  89.  
  90. Nowe hasło: <br /> <input type="password" name="haslo2" /><br />
  91.  
  92. Powtórz hasło: <br /> <input type="password" name="haslo3" /><br />
  93.  
  94.  
  95. <?php
  96. if (isset($_SESSION['e_haslo']))
  97. {
  98. echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
  99. unset($_SESSION['e_haslo']);
  100. }
  101. if (isset($_SESSION['e_haslo1']))
  102. {
  103. echo '<div class="error">'.$_SESSION['e_haslo1'].'</div>';
  104. unset($_SESSION['e_haslo1']);
  105. }
  106.  
  107. if (isset($_SESSION['e_haslo2']))
  108. {
  109. echo '<div class="error">'.$_SESSION['e_haslo2'].'</div>';
  110. unset($_SESSION['e_haslo2']);
  111. }
  112. ?>
  113. <input type="submit" value="Zmień hasło:" name="ok"/>
  114. </form>
  115. </body>
  116. </html>


Ten post edytował inomi13 16.08.2017, 10:16:37
Go to the top of the page
+Quote Post
nospor
post 16.08.2017, 10:06:05
Post #2





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Uzywaj BBCODE dla kodu wstawianego na forum

Masz wyraznie napisane co zle:
Cytat
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp\htdocs\projekt\zmiana_hasla.php on line 41

Jak nie znasz podstaw angielskiego uzywj google translate

Przenosze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
inomi13
post 16.08.2017, 14:10:27
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


Oto poprawiony kod który zmienia hasło w bazie danych jednak mam problem z weryfikacją starego hasła z tym które znajduje się w bazie danych.

  1. <?php
  2.  
  3.  
  4. if (!isset($_SESSION['zalogowany']))
  5. {
  6. header('Location: index.php');
  7. exit();
  8. }
  9.  
  10.  
  11. if(isset($_POST['ok']))
  12. {
  13.  
  14. $wszystko_OK=true;
  15. $user = $_SESSION['user'];
  16. $haslo = $_POST['haslo'];
  17. $haslo1 = $_POST['haslo1'];
  18. $haslo2 = $_POST['haslo2'];
  19.  
  20.  
  21. if((strlen($haslo)<8) || (strlen($haslo)>20))
  22. {
  23. $wszystko_OK=false;
  24. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  25. }
  26. else
  27. {
  28. if((strlen($haslo1)<8) || (strlen($haslo1)>20))
  29. {
  30. $wszystko_OK=false;
  31. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  32. }
  33. else
  34. {
  35. if((strlen($haslo2)<8) || (strlen($haslo2)>20))
  36. {
  37. $wszystko_OK=false;
  38. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  39. }
  40. else
  41. {
  42. if($haslo1 != $haslo2)
  43. {
  44. $wszystko_OK=false;
  45. $_SESSION['e_haslo']="Nowe hasło i jego powtórzenie, nie są takie same!";
  46. }
  47. else
  48. {
  49.  
  50. $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
  51.  
  52. require_once "connect.php";
  53. mysqli_report(MYSQLI_REPORT_STRICT);
  54.  
  55. try
  56. {
  57. $polaczenie= mysqli_connect($host,$db_user,$db_password,$db_name);
  58. if ($polaczenie->connect_errno!=0)
  59. {
  60. throw new Exception(mysqli_connect_errno());
  61. }
  62. else
  63. {
  64.  
  65.  
  66. if($wszystko_OK==true)
  67. {
  68. $zmiana = "UPDATE uzytkownicy SET pass = '$haslo_hash' WHERE user='$user'";
  69. if ($polaczenie->query($zmiana) === true)
  70. {
  71. $_SESSION['udanarejestracja']=true;
  72. header('Location: potwierdzenie_zamiany_hasla.php');
  73. }
  74. else{
  75. throw new Exception($polaczenie->error);
  76. }
  77. }
  78. $polaczenie->close();
  79. }
  80. }
  81.  
  82. catch(Exception $e)
  83. {
  84. echo'<br />info: '.$e;
  85. }
  86. }}}}}
  87. ?>
  88. <!DOCTYPE HTML>
  89. <html lang="pl">
  90. <head>
  91. <meta charset="utf-8" />
  92. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  93. <title>Projekt</title>
  94. <link rel="stylesheet" href="style/style.css" type="text/css" />
  95. <style>
  96. .error
  97. {
  98. color:#cc0000;
  99. margin-top: 10px;
  100. margin-bottom: 1px;
  101. }
  102. </style>
  103. </head>
  104. <body><center><br><br><div id="logo">
  105. <img src="img/logo.png" align="center"/ ></div>
  106. <div id="container2" align="center">
  107. <form method="post">
  108.  
  109.  
  110. Twój login to</b></td> <td><b>: </b></td> <td><b><?php echo($_SESSION['user']); ?></b></td><br><br>
  111.  
  112. Stare hasło: <br /> <input type="password" name="haslo" /><br />
  113.  
  114. Nowe hasło: <br /> <input type="password" name="haslo1" /><br />
  115.  
  116. Powtórz hasło: <br /> <input type="password" name="haslo2" /><br />
  117.  
  118.  
  119. <?php
  120. if (isset($_SESSION['e_haslo']))
  121. {
  122. echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
  123. unset($_SESSION['e_haslo']);
  124. }
  125.  
  126. ?>
  127. <input type="submit" value="Zmień hasło:" name="ok"/>
  128. </form>
  129. </body>
  130. </html>
Go to the top of the page
+Quote Post
viking
post 16.08.2017, 14:20:26
Post #4





Grupa: Zarejestrowani
Postów: 6 376
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ogarnij if/else. Masz tam jakieś bezsensowne drzewko. Poza tym strona w utf8. Sprawdź sobie co zwraca var_dump(strlen('ą'));


--------------------
Go to the top of the page
+Quote Post
inomi13
post 18.08.2017, 14:01:25
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


Ogarnąłem kod i wszystko działa, łącznie z weryfikacją hasła. Prosił bym o sprawdzenie kodu czy jest spójny i logiczny.

  1. <?php
  2. if (!isset($_SESSION['zalogowany']))
  3. {
  4. header('Location: index.php');
  5. exit();
  6. }
  7. if(isset($_POST['ok']))
  8. {
  9.  
  10. $wszystko_OK=true;
  11. $user = $_SESSION['user'];
  12. $haslo = $_POST['haslo'];
  13. $haslo1 = $_POST['haslo1'];
  14. $haslo2 = $_POST['haslo2'];
  15. $hash=$_SESSION['pass'];
  16.  
  17.  
  18. if((strlen($haslo)<8) || (strlen($haslo1)<8)||(strlen($haslo)>20) || (strlen($haslo1)>20))
  19. {
  20. $wszystko_OK=false;
  21. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  22.  
  23. }
  24. else
  25. {
  26. if($haslo1 != $haslo2)
  27. {
  28. $wszystko_OK=false;
  29. $_SESSION['e_haslo']="Nowe hasło i jego powtórzenie, nie są takie same!";
  30. }
  31. else
  32. {
  33.  
  34.  
  35. require_once "connect.php";
  36. mysqli_report(MYSQLI_REPORT_STRICT);
  37.  
  38.  
  39.  
  40. try
  41. {
  42. $polaczenie= mysqli_connect($host,$db_user,$db_password,$db_name);
  43.  
  44. if ($polaczenie->connect_errno!=0)
  45. {
  46. throw new Exception(mysqli_connect_errno());
  47. }
  48. else
  49. {
  50. if(password_verify($haslo, $hash))
  51. {
  52. $wszystko_OK=true;
  53.  
  54. $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
  55. $zmiana = "UPDATE uzytkownicy SET pass = '$haslo_hash' WHERE user='$user'";
  56. if ($polaczenie->query($zmiana) === true)
  57. {
  58. $_SESSION['udanazmiana']=true;
  59. header('Location: potwierdzenie_zamiany_hasla.php');
  60. }}
  61. else
  62. {
  63. $wszystko_OK=false;
  64. $_SESSION['e_haslo']="Stare hasło jest nie poprawne";
  65. }
  66.  
  67. $polaczenie->close();
  68. }
  69. }
  70.  
  71. catch(Exception $e)
  72. {
  73. echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o zmianę hasła w innym terminie!</span>';
  74. echo '<br />Informacja developerska: '.$e;
  75. }
  76. }}}
  77. ?>
  78. <!DOCTYPE HTML>
  79. <html lang="pl">
  80. <head>
  81. <meta charset="utf-8" />
  82. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  83. <title>Projekt</title>
  84. <link rel="stylesheet" href="style/style.css" type="text/css" />
  85. <style>
  86. .error
  87. {
  88. color:#cc0000;
  89. margin-top: 10px;
  90. margin-bottom: 1px;
  91. }
  92. </style>
  93. </head>
  94. <body>
  95. <center>
  96. <br><br>
  97. <div id="logo">
  98. <img src="img/logo.png" align="center"/ ></div>
  99. <div id="container2" align="center">
  100. <form method="post">
  101.  
  102.  
  103. Twój login to</b></td> <td><b>: </b></td> <td><b><?php echo($_SESSION['user']); ?></b></td><br><br>
  104.  
  105. Stare hasło: <br /> <input type="password" name="haslo" /><br />
  106.  
  107. Nowe hasło: <br /> <input type="password" name="haslo1" /><br />
  108.  
  109. Powtórz hasło: <br /> <input type="password" name="haslo2" /><br />
  110.  
  111.  
  112.  
  113. <?php
  114. if (isset($_SESSION['e_haslo']))
  115. {
  116. echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
  117. unset($_SESSION['e_haslo']);
  118. }
  119.  
  120. ?>
  121. <input type="submit" value="Zmień hasło:" name="ok"/>
  122. </form>
  123. </body>
  124. </html>
Go to the top of the page
+Quote Post
nospor
post 18.08.2017, 14:18:47
Post #6





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Haslo powinienies pobierac z bazy na biezaco a nie trzymac je w sesji


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
inomi13
post 18.08.2017, 14:31:07
Post #7





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


W jaki sposób przerobić powyższy kod aby hasło było zaciągane z bazy danych w momencie weryfikacji a nie było przechowywane w sesji?
Go to the top of the page
+Quote Post
nospor
post 18.08.2017, 14:36:14
Post #8





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Tam gdzie pobierasz haslo z sesji, zamien to na pobranie hasla z bazy... Przeciez umiesz pobierac dane z bazy.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
inomi13
post 21.08.2017, 11:27:55
Post #9





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


poprawiłem kod i teraz zaciąga hasło z bazy danych, poniżej wrzucam finalny kod zmiany hasła. Proszę o sprawdzenie czy jest wszystko ok.


  1. <?php
  2. if (!isset($_SESSION['zalogowany']))
  3. {
  4. header('Location: index.php');
  5. exit();
  6. }
  7. if(isset($_POST['ok']))
  8. {
  9.  
  10. $wszystko_OK=true;
  11. $user = $_SESSION['user'];
  12. $haslo = $_POST['haslo'];
  13. $haslo1 = $_POST['haslo1'];
  14. $haslo2 = $_POST['haslo2'];
  15.  
  16.  
  17.  
  18. if((strlen($haslo)<8) || (strlen($haslo1)<8)||(strlen($haslo)>20) || (strlen($haslo1)>20))
  19. {
  20. $wszystko_OK=false;
  21. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  22.  
  23. }
  24. else
  25. {
  26. if($haslo1 != $haslo2)
  27. {
  28. $wszystko_OK=false;
  29. $_SESSION['e_haslo']="Nowe hasło i jego powtórzenie, nie są takie same!";
  30. }
  31. else
  32. {
  33.  
  34.  
  35. require_once "connect.php";
  36. mysqli_report(MYSQLI_REPORT_STRICT);
  37.  
  38.  
  39. {
  40. try
  41. {
  42. $polaczenie= mysqli_connect($host,$db_user,$db_password,$db_name);
  43. $wynik= $polaczenie->query("SELECT pass from uzytkownicy where user='$user'");
  44. $wiersz = $wynik->fetch_assoc();
  45.  
  46.  
  47. if ($polaczenie->connect_errno!=0)
  48. {
  49. throw new Exception(mysqli_connect_errno());
  50. }
  51. else
  52. {
  53.  
  54. if(password_verify($haslo, $wiersz['pass']))
  55. {
  56. $wszystko_OK=true;
  57.  
  58. $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
  59. $zmiana = "UPDATE uzytkownicy SET pass = '$haslo_hash' WHERE user='$user'";
  60. if ($polaczenie->query($zmiana) === true)
  61. {
  62. $_SESSION['udanazmiana']=true;
  63. header('Location: potwierdzenie_zamiany_hasla.php');
  64. }}
  65. else
  66. {
  67. $wszystko_OK=false;
  68. $_SESSION['e_haslo']="Stare hasło jest nie poprawne";
  69. }
  70.  
  71. $polaczenie->close();
  72. }
  73. }
  74. catch(Exception $e)
  75. {
  76. echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o zmianę hasła w innym terminie!</span>';
  77. echo '<br />Informacja developerska: '.$e;
  78. }
  79. }}}}
  80. ?>
  81. <!DOCTYPE HTML>
  82. <html lang="pl">
  83. <head>
  84. <meta charset="utf-8" />
  85. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  86. <title>Projekt</title>
  87. <link rel="stylesheet" href="style.css" type="text/css" />
  88. <style>
  89. .error
  90. {
  91. color:#cc0000;
  92. margin-top: 10px;
  93. margin-bottom: 1px;
  94.  
  95.  
  96. }
  97. </style>
  98. </head>
  99. <body>
  100. <center>
  101. <br><br>
  102. <div id="logo">
  103. <img src="img/logo.png" align="center"/ ></div>
  104. <div id="container2" align="center">
  105. <form method="post">
  106.  
  107.  
  108. Twój login to</b></td> <td><b>: </b></td> <td><b><?php echo($_SESSION['user']); ?></b></td><br><br>
  109.  
  110. Stare hasło: <br /> <input type="password" name="haslo" /><br />
  111.  
  112. Nowe hasło: <br /> <input type="password" name="haslo1" /><br />
  113.  
  114. Powtórz hasło: <br /> <input type="password" name="haslo2" /><br />
  115.  
  116.  
  117.  
  118. <?php
  119. if (isset($_SESSION['e_haslo']))
  120. {
  121. echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
  122. unset($_SESSION['e_haslo']);
  123. }
  124.  
  125. ?>
  126. <input type="submit" value="Zmień hasło:" name="ok"/>
  127. </form>
  128. </body>
  129. </html>
Go to the top of the page
+Quote Post
nospor
post 21.08.2017, 15:17:08
Post #10





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




zalezy co rozumiesz przez "ok".
Pomijajac fakt, ze
- kod jest bardzo brzydki,
- nie uzywasz bindowania
- masz bledy w pisowni polskiej

to tak, jest ok smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 4.05.2025 - 05:54