Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Zmiena hasła :S
Forum PHP.pl > Forum > Przedszkole
Kenexos
TEMAT DO ZAMKNIĘCIA!!
Dzięki phpion i kaem sobie poradziłem.
Max Damage
Możliwe że coś mi padło na oczy, ale nie widzę połączenia z bazą.....
Pride
hmmm może to hasło co masz w bacie jest w md5? Ten pass co podałeś nie wygląda na to, ale....

Najlepiej daj
  1. <?php
  2. echo $old.'<br />'; echo $new.'<br />'; echo $array['password'];
  3. ?>

To bedzisz widział czy old == to co w bazie ;p
kaem
Powinno być:
  1. <?php
  2. $password = $array['haslo'];
  3. if(sha1($old) == $password)
  4. ...
  5. $query = mysql_query("UPDATE `user` SET `haslo` = sha1('$new').......
  6. ?>

Zastosowałem funkcje sha1, ale ty wstaw taką jaką sam szyfrujesz hasło.
Kenexos
Ok ale i tak nie działa chyba dlatego że nie znam swojego kodowania.tongue.gif
Na 100% to nie jest md5..
Może ktoś umi odczytać jakie to z logowanie więc:
  1. <?php
  2. function usun($data){
  3.  
  4. GLOBAL $dbc;
  5. if (ini_get('magic_quotes_gpc')){
  6. $data = stripslashes($data);
  7. }
  8.  return mysql_real_escape_string($data, $dbc);
  9. }
  10. if (isset($_POST['submit'])){
  11.  
  12. if (empty($_POST['login'])){
  13. $message .= '<font class="blad">Nie podałeś loginu</font><br />';
  14. $l = FALSE;
  15. }else{
  16. $l = usun($_POST['login']);
  17. }
  18.  
  19. if (empty($_POST['haslo'])){
  20. $message .= '<font class="blad">Nie podałeś hasła</font><br />';
  21. $h = FALSE;
  22. }else{
  23. $h = usun($_POST['haslo']);
  24. }  
  25. if ( $l && $h ){
  26.  
  27. $query = "SELECT username, access  FROM user WHERE username='$l' AND haslo=password('$h')";
  28. $result = mysql_query($query);
  29. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  30. ?>


Proszę o odpowiedź.
kaem
  1. <?php
  2. $query = "SELECT username, access  FROM user WHERE username='$l' AND haslo=password('$h')";
  3. ?>

Tutaj widać, że stosujesz password, ja jednak bym polecał sha1 albo md5.
Kenexos
No dobra zmieniłem na md5 i działa thx ;]
Ale wracając do skryptu zmiany hasła i tak nie działa ciągle po wpisaniu hasła pisze Incorrect Password ..
  1. <?php
  2. $username = $_SESSION['username'];
  3. ?>
  4.  
  5. <?
  6. if(!$username || $username=="") { die("You are not logged in!"); }
  7. if(!$_POST['posted']) { ?>
  8. <form action="index.php?show=changepass" method="post">
  9. Old Password: <input type="password" name="old"><br/>
  10. New Password: <input type="password" name="new"><br/>
  11. <center><input type="submit" name="posted" value="Change Password"></center>
  12. </form>
  13. <? } else {
  14. $old = $_POST['old'];
  15. $new = $_POST['new'];
  16. $query = mysql_query("SELECT * FROM `user` WHERE(`user_id`='$username')") or die("Could not select account $username! ".mysql_error());
  17. $array = mysql_fetch_array($query);
  18. $password = $array['haslo'];
  19. if(md5($old) == $password) {
  20. $query = mysql_query("UPDATE `user` SET `haslo` = md5('$new') WHERE `user`.'$username' LIMIT 1") or die("Could not Change password! ".mysql_error());
  21. echo 'Password changed successfully!';
  22. } else {
  23. echo 'Incorrect Password!';
  24. }
  25. }
  26. ?>

Możliwe że mam źle powpisywane dane bazy danych??
kaem
Ale pozmieniałeś wpisy w bazie? Wywal starych użytkowników i utwórz nowych z hasłem zakodowanym za pomocą md5. Albo tylko pozmieniaj same hasła.
Kenexos
wiem stworzyłem nowe konta z md5 zalogowałem się wchodzę na stronę zmiany hasła i cały czas incorect password ;/ chyba z tego skryptu już nic nie pójdzie co? ja już nie wiem co jest źle..
kaem
Pokaż jakiego typu i jaką długość ma pole haslo w tabeli. Może jest za krótkie albo ma zły typ. Pole powinno być typu char o długości 32 bo chyba tyle zwraca md5(nie jestem pewien).
Kenexos
W bazie mam takie coś:
kaem
Lol, a wracając do skryptu zamiast
  1. <?php
  2. $query = mysql_query("SELECT * FROM `user` WHERE(`user_id`='$username')")
  3. ?>

powinno być
  1. <?php
  2. $query = mysql_query("SELECT * FROM `user` WHERE(`username`='$username')")
  3. ?>


EDIT//
tak mi się wydaje tongue.gif
Kenexos
No dobra teraz mam taki błąd:
Could not Change password! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test' LIMIT 1' at line 1


@edit
Możliwe że jest coś źle tera w :
$query = mysql_query("UPDATE `user` SET `haslo` = md5('$new') WHERE `user`.'$username' LIMIT 1") or die("Could not Change password! ".mysql_error());
kaem
Usuń ten limit winksmiley.jpg Chyba w UPDATE nawet go się nie używa;]

EDIT//
i proszę niech w końcu zadziała tongue.gif
phpion
Cytat(kaem @ 6.08.2008, 18:04:39 ) *
Usuń ten limit winksmiley.jpg Chyba w UPDATE nawet go się nie używa;]

Używa się.

  1. <?php
  2. $query = mysql_query("UPDATE `user` SET `haslo` = md5('$new') WHERE `username`='$username' LIMIT 1") or die("Could not Change password! ".mysql_error());
  3. ?>
Kenexos
OK THX!!! DZIAŁA ALL!!! smile.gif
Teraz tylko edycja swoich danych po zalogowaniu ale to w innym temacie już napisałem i tak nikt dokładnie nie pomógł..;/
kaem
Z tym Update to racja, można używać LIMIT. Mój błąd.
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.