Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problemy z kodowaniem i odczytem kodu
sebap123
post
Post #1





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Witam
Napisałem taki kod strony służącej do zmiany hasła użytkownika:
  1. <?
  2. include("../include/sessions.inc");
  3. include("../include/connect.php");
  4. if (isset($_POST['do_change'])){//1
  5. $id=$_SESSION['id'];
  6. $login=$_SESSION['login'];
  7. $password=$_POST['o_password'];
  8. $a=mysql_query("SELECT*FROM tabela_users WHERE user_id='$id' AND user_name='$login' AND user_password=md5('$password')");
  9. $user_exists=mysql_num_rows($a);
  10. if ($user_exists==1){//2
  11. $password=$r['user_password'];
  12. $o_password=$_POST['o_password'];
  13. if ($_POST['password1']==$_POST['password2']){//3
  14. $n_password=$_POST['password1'];
  15. $b=mysql_query("UPDATE tabela_users SET user_password=md5('$n_password') WHERE user_id='$id' AND user_name='$login'");
  16. print "Pomyślnie zaktualizowano dane";
  17. print "<script>setTimeout('document.location = \"register.php\"', 2000);</script>";
  18. }//3
  19. else{//4
  20. $adres = 'http://domena.pl/user/index.php'.'?er=2';
  21. Header('HTTP/1.1 301 Moved Permanently');
  22. Header('Location: '.$adres);
  23. }//4
  24. }
  25. else{//5
  26. $adres = 'http://domena.pl/user/index.php'.'?er=1';
  27. Header('HTTP/1.1 301 Moved Permanently');
  28. Header('Location: '.$adres);
  29. }//5
  30. }//1
  31. else{
  32. if (isset($_GET['er'])){
  33. $er=$_GET['er'];
  34. switch($er){
  35. case '1':
  36. print "<b>Podałeś złe hasło</b>";
  37. break;
  38. case '2':
  39. print "Nowe hasła nie są takie same";
  40. break;}}
  41. ?>
  42. <form method="post" action="update.php">
  43. Aktualne hasło:
  44. <br />
  45. <input type="password" name="o_password" />
  46. <br />
  47. Nowe hasło:
  48. <br />
  49. <input type="password" name="password1" />
  50. <br />
  51. Powtórz hasło:
  52. <br />
  53. <input type="password" name="password2" />
  54. <br />
  55. <input type="submit" value="Aktualizuj" name="do_change" />
  56. </form>
  57. <?
  58. }
  59. ?>

Jednak mam problem ze sprawdzaniem hasła w pierwszym sparwdzeniu, bo caly czas pokazuje mi, że wpisalem złe hasło. Jednak cały czas wpisuje to samo (dobre) haslo i nic.
To jest fragment ze strony gdzie użytkownik jest rejestrowany.
  1. $add = "INSERT INTO tabela_users (user_name, user_password) VALUES ('$user', md5('$pass'))";

Osobiście jestem prawie pewien, że chodzi o kodowanie hasła, ale nie mam pojęcia gdzie jest błąd.
Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Larges
post
Post #2





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


Dodajesz wpis do bazy przy edycji hasła? party.gif

Jeśli działałbyś za pomocą UPDATE lub SELECT i chciał wykorzystać polskie znaki to zapewne radziłbym skorzystanie z convert()
http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

Tutaj nie bardzo wiem co nie gra.
Hmm chodzi o Kodowanie, czy szyfrowanie? ;>

Ten post edytował Larges 10.10.2009, 19:02:57


--------------------
Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
sebap123
post
Post #3





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Mysle o czym innym i co innego pisze... laugh.gif
Kodowanie jest ok, chodziło mi o szyfrowanie. Coś mi się to md5 kopie. laugh.gif
Go to the top of the page
+Quote Post
Larges
post
Post #4





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


a tak ?

  1. $add = "INSERT INTO tabela_users (user_name, user_password) VALUES ('$user', " . md5($pass) . ")";


--------------------
Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
sebap123
post
Post #5





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Nie chodzi mi o dodanie (raczej zmiane) hasła tylko o samo sprawdzenie na początku (po wpisaniu pierwotnego hasła).
  1. if (isset($_POST['do_change'])){//1
  2. $id=$_SESSION['id'];
  3. $login=$_SESSION['login'];
  4. $password=$_POST['o_password'];
  5. $a=mysql_query("SELECT*FROM tabela_users WHERE user_id='$id' AND user_name='$login' AND user_password=md5('$password')");
  6. $user_exists=mysql_num_rows($a);
  7. if ($user_exists==1){//2

Z tego mi wynika, że taki użytkownik nie istnieje bo nie spełnia wszystkich warunków (czyli hasła).
Tutaj jest własnie problem.
Go to the top of the page
+Quote Post
Larges
post
Post #6





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


W czym piszesz?
Polecam ZEND lub Eclipse - fajnie kolorują składnię.

Jak się przypatrzysz zapytania SQL masz nieprawidłowe:
  1. $a=mysql_query("SELECT*FROM tabela_users WHERE user_id='$id' AND user_name='$login' AND user_password=md5('$password')");

W nim funkcja md5() nie działa bo nie tak z cudzysłowiem masz ;]

Spróbuj:
  1. $a=mysql_query("SELECT * FROM tabela_users WHERE user_id='$id' AND user_name='$login' AND user_password='" . md5($password) . "'");


Ten post edytował Larges 10.10.2009, 19:33:40


--------------------
Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
sebap123
post
Post #7





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Piszę w Dreamweaver.
Nie działa mi ten twój kod. Ale zadziałał nieco inny:
  1. $a=mysql_query("SELECT*FROM tabela_users WHERE user_name='$login' AND user_password=md5('$password')");

Jednak teraz mam inny problem, bo hasło nie chce się wpisać do bazy. Niby wyświetla, że zaktualizowano, ale jak się wyloguje i wpisuje nowy kod to pokazuje, że jest zły. Jak wpisze stary to się loguje.
Go to the top of the page
+Quote Post
Larges
post
Post #8





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


A jakie masz pole w tabeli na hasło - typ, długość? smile.gif

Poza tym Ty działasz na SELECT (wyszukujesz) i INSERT (dodajesz) a wg mnie powinieneś aktualizować za pomocą UPDATE exclamation.gif smile.gif
http://dev.mysql.com/doc/refman/5.0/en/update.html

Ten post edytował Larges 10.10.2009, 20:01:13


--------------------
Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
sebap123
post
Post #9





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


text
Ale nie sądze, że tabela jest winna ponieważ w pozostałych miejscach strony i dodaje i sprawdza. Nie chce tylko zupdatowac.
Go to the top of the page
+Quote Post
Larges
post
Post #10





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


O masz UPDATE, w tym gąszczu pominąłem.

wstaw:
  1. mysql_query("UPDATE tabela_users SET user_password='" . md5($n_password) . "' WHERE user_id='$id' AND user_name='$login'");


po co przed zamytaniem (przed mysql_query('xxx') dajesz np. $b ?


Ten post edytował Larges 10.10.2009, 20:08:06


--------------------
Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
sebap123
post
Post #11





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Nic... sad.gif
Znowu nie działa.

Ten post edytował sebap123 10.10.2009, 20:16:25
Go to the top of the page
+Quote Post
Larges
post
Post #12





Grupa: Zarejestrowani
Postów: 333
Pomógł: 16
Dołączył: 13.05.2008
Skąd: Łódź

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


sporo Twoich problemów tkwi zapewne w złym używaniu cudzysłowu i apostrofu.
Polecam korzystanie z programu który dobrze koloruje skladnię PHP. Dzięki niemu możesz poznać przed wysłaniem na serwer gdzie tkwi błąd (zaznaczy linijke z błędem) lub czy dobrze użyłeś apostrof, cudzysłów. Poza tym Masz jakąś książkę do PHP? Warto wertować kartki z uwagą.

Nie bardzo wiem już jak Tobie pomóc. To co u mnie ZEND zaznacza jako ok u Ciebie nie działa? ;>

Ten post edytował Larges 10.10.2009, 20:18:35


--------------------
Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
sebap123
post
Post #13





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


OK. Popatrzę jeszcze. Dremweaver dobrze zaznacza, tylko w takich złożonych sprawach się czasami gubi i sobie ułatwia. Poczytam jeszcze i pobrobuję może coś znajdę.
Jak by coś Ci się udało wymyślić to napisz.
Dzięki za pomoc.
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 Aktualny czas: 21.08.2025 - 11:42