Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zmiana hasła - jak zmieniać na nowe hasło jeżeli stare się zgadza?
poplop
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 14.06.2010

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


Witam,
mam problem. Mam skrypt, który zmienia hasło. Fajnie ale jest tylko jedno pole "Nowe hasło" i nawet nie sprawdza czy stare hasło się zgadza.
oto skrypt:
  1. <?php
  2.  
  3. require 'header.php'; // Dołącz początkowy kod HTML
  4. require 'config.php'; // Dołącz plik konfiguracyjny i połączenie z bazą
  5. require_once 'user.class.php';
  6.  
  7. /**
  8.  * Sprawdź czy formularz został wysłany
  9.  */
  10. if ($_POST['send'] == 1) {
  11. // Zabezpiecz dane z formularza przed kodem HTML i ewentualnymi atakami SQL Injection
  12. $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
  13.  
  14. // Zapisz dane użytkownika o podanym ID, do zmiennej $profile
  15. $id = $_GET['id'];
  16.  
  17. /**
  18.   * Jeśli wystąpiły jakieś błędy, to je pokaż
  19.   */
  20. if ($errors != '') {
  21. echo '<p class="error">Zmiana hasła nie powiodła się:<br />'.$errors.'</p>';
  22. }
  23.  
  24. else {
  25. // Posól i zasahuj hasło
  26. $pass = user::passSalter($pass);
  27. // Zapisz dane do bazy
  28. mysql_query("UPDATE `users` SET `id`='$id',`pass`='$pass' WHERE 1;") or die ('<p class="error">Wystąpił błąd podczas zmiany hasła.</p>');
  29. echo '<p class="success">Hasło zostało poprawnie zmienione</p>';
  30. }
  31. }
  32. ?>
  33.  
  34. <?php
  35. if (user::isLogged()) {
  36. echo '<center><form method="post" action="">
  37. <label for="pass">Nowe hasło:</label>
  38. <input maxlength="32" type="password" name="pass" id="pass" />
  39. <input type="hidden" name="send" value="1" />
  40. <input type="submit" value="Zmień" />
  41. </form></br>
  42. <a href="panel.php">Wróć do panelu</a>';
  43. }
  44.  
  45. else {
  46.  
  47. echo 'Funkcja dostępna tylko dla zalogowanych. <a href="index.php">Logowanie</a>';
  48. }
  49.  
  50. ?>

W czym potrzebuję pomocy?
Chcę aby było nowe pole "Stare hasło" i będzie trzeba je uzupełnić i jeżeli hasło będzie zgodne z tym w bazie to hasło zmienia się na hasło z pola "nowe hasło".
Chyba dokładnie wyjaśniłem. Chodzi mi tylko o funkcje sprawdzania hasła w bazie i przepuszczania, bo dodanie pola do formularza to nie problem.
Mam nadzieję że dobrze wyjaśniłem.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
poplop
post
Post #2





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 14.06.2010

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


Cytat(artuross @ 2.04.2013, 13:31:00 ) *
Moze nie poprawnie zapisujesz? Tzn. moze haslo wygenerowane przez Ciebie nie ma takiego samego algorytmu sprawdzania jak haslo uzywane do logowania?

Raczej nie, wszystko jest chyba dobrze użyte. Sprawdzałem plik logowania i tworzenia użytkownika i wykorzystywałem tamte funkcje.
Jak napisałem skrypt z podaniem tylko nowego hasła bez sprawdzania starego wszystko dobrze się zmienia.
A oto ten skrypt:
  1. <?php
  2.  
  3. require 'header.php'; // Dołącz początkowy kod HTML
  4. require 'config.php'; // Dołącz plik konfiguracyjny i połączenie z bazą
  5. require_once 'user.class.php';
  6.  
  7. /**
  8.  * Sprawdź czy formularz został wysłany
  9.  */
  10. if ($_POST['send'] == 1) {
  11. // Zabezpiecz dane z formularza przed kodem HTML i ewentualnymi atakami SQL Injection
  12. $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
  13.  
  14. // Zapisz dane użytkownika o podanym ID, do zmiennej $profile
  15. $id = $_GET['id'];
  16.  
  17. /**
  18.   * Jeśli wystąpiły jakieś błędy, to je pokaż
  19.   */
  20. if ($errors != '') {
  21. echo '<p class="error">Zmiana hasła nie powiodła się:<br />'.$errors.'</p>';
  22. }
  23.  
  24. else {
  25. // Posól i zasahuj hasło
  26. $pass = user::passSalter($pass);
  27. // Zapisz dane do bazy
  28. mysql_query("UPDATE `users` SET `pass`='$newpass' WHERE `id`='$id';") or die ('<p class="error">Wystąpił błąd podczas zmiany hasła.</p>');
  29. echo '<p class="success">Hasło zostało poprawnie zmienione</p>';
  30. }
  31. }
  32. ?>
  33.  
  34. <?php
  35. if (user::isLogged()) {
  36. echo '<center><form method="post" action="">
  37. <label for="pass">Hasło:</label>
  38. <input maxlength="32" type="password" name="pass" id="pass" />
  39. <input type="hidden" name="send" value="1" />
  40. <input type="submit" value="Zmień" />
  41. </form></br>
  42. <a href="panel.php">Wróć do panelu</a>';
  43. }
  44.  
  45. else {
  46.  
  47. echo 'Funkcja dostępna tylko dla zalogowanych. <a href="index.php">Logowanie</a>';
  48. }
  49.  
  50. ?>


A to skrypt z sprawdzaniem starego hasła i jeżeli ono się zgadza to zmienia na nowe - no i tu jest problem bo zapisuje jakoś inaczej zakodowane hasło (nie wiem czemu).
Oto kod:
  1. <?php
  2.  
  3. require 'header.php'; // Dołącz początkowy kod HTML
  4. require 'config.php'; // Dołącz plik konfiguracyjny i połączenie z bazą
  5. require_once 'user.class.php';
  6.  
  7. /**
  8.  * Sprawdź czy formularz został wysłany
  9.  */
  10. if ($_POST['send'] == 1) {
  11. // Zabezpiecz dane z formularza przed kodem HTML i ewentualnymi atakami SQL Injection
  12. $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
  13.  
  14. // Zapisz dane użytkownika o podanym ID, do zmiennej $profile
  15. $id = $_GET['id'];
  16.  
  17. // Posól i zasahuj hasło
  18. $pass = user::passSalter($pass);
  19. // Posól i zasahuj hasło
  20. $newpass = user::passSalter($newpass);
  21.  
  22. /**
  23.   * Jeśli wystąpiły jakieś błędy, to je pokaż
  24.   */
  25. if ($errors != '') {
  26. echo '<p class="error">Zmiana hasła nie powiodła się:<br />'.$errors.'</p>';
  27. }
  28.  
  29. // Sprawdź, czy użytkownik o podanym haśle isnieje w bazie danych
  30. $userExists = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE id = '$id' AND pass = '$pass'"));
  31.  
  32. if ($userExists[0] == 0) {
  33. // Użytkownik nie istnieje w bazie
  34. echo '<center><p class="error">Hasło nie zostało zmienione - podałeś złe hasło!</p></center>';
  35. }
  36.  
  37. else {
  38.  
  39. // Zapisz dane do bazy
  40. mysql_query("UPDATE `users` SET `pass`='$newpass' WHERE `id`='$id';") or die ('<p class="error">Wystąpił błąd podczas zmiany hasła.</p>');
  41. echo '<p class="success">Hasło zostało poprawnie zmienione</p>';
  42. }
  43. }
  44. ?>
  45.  
  46. <?php
  47. if (user::isLogged()) {
  48. echo '<center><form method="post" action="">
  49. <label for="pass">Stare hasło:</label>
  50. <input maxlength="32" type="password" name="pass" id="pass" />
  51. <label for="newpass">Nowe hasło:</label>
  52. <input maxlength="32" type="password" name="newpass" id="newpass" />
  53. <input type="hidden" name="send" value="1" />
  54. <input type="submit" value="Zmień" />
  55. </form></br>
  56. <a href="panel.php">Wróć do panelu</a>';
  57. }
  58.  
  59. else {
  60.  
  61. echo 'Funkcja dostępna tylko dla zalogowanych. <a href="index.php">Logowanie</a>';
  62. }
  63.  
  64. ?>
Go to the top of the page
+Quote Post

Posty w temacie
- poplop   [PHP] Zmiana hasła - jak zmieniać na nowe hasło jeżeli stare się zgadza?   1.04.2013, 23:43:16
- - Damonsson   Masz w klasie do logowania sprawdzanie hasła, wyst...   2.04.2013, 08:17:55
- - poplop   Cytat(Damonsson @ 2.04.2013, 09:17:55...   2.04.2013, 10:09:42
- - !*!   A co w tym złego że nowe hasło ma sól? wywal wtedy...   2.04.2013, 10:29:21
- - poplop   Cytat(!*! @ 2.04.2013, 11:29...   2.04.2013, 11:12:20
- - ssstrz   Zapis do bazy jest poprawny? [PHP] pobierz, plaint...   2.04.2013, 11:36:42
- - poplop   Cytat(ssstrz @ 2.04.2013, 12:36:42 ) ...   2.04.2013, 11:57:49
- - ssstrz   no skoro jesteś pewien, że ten zapis jest ok: [PH...   2.04.2013, 12:13:18
- - poplop   Cytat(ssstrz @ 2.04.2013, 13:13:18 ) ...   2.04.2013, 12:22:32
- - ssstrz   soli się dobrze ale robisz coś niedobrego z id w t...   2.04.2013, 12:28:27
- - artuross   Moze nie poprawnie zapisujesz? Tzn. moze haslo wyg...   2.04.2013, 12:31:00
- - poplop   Cytat(artuross @ 2.04.2013, 13:31:00 ...   2.04.2013, 12:42:53
- - !*!   W pierwszym skrypcie zapisujesz hasło ze zmiennej ...   2.04.2013, 12:45:19
- - poplop   Cytat(!*! @ 2.04.2013, 13:45...   2.04.2013, 12:49:28
- - !*!   To od początku, co zawiera $pass i $newp...   2.04.2013, 12:52:06
- - poplop   Cytat(!*! @ 2.04.2013, 13:52...   2.04.2013, 13:08:51
- - !*!   Cytatc7769ba163acebdf13ab5a232ab73a6a I to jest w ...   2.04.2013, 13:11:31
- - poplop   Cytat(!*! @ 2.04.2013, 14:11...   2.04.2013, 13:15:00
- - !*!   [PHP] pobierz, plaintext $pass = mysql_real_escape...   2.04.2013, 13:19:50
- - poplop   Cytat(!*! @ 2.04.2013, 14:19...   2.04.2013, 13:25:35
- - !*!   Wywal te funkcje ze zmiennych $pass i $n...   2.04.2013, 13:29:42


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

 



RSS Aktualny czas: 5.10.2025 - 10:43