Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem ze skryptem logowania.
Lampek
post
Post #1





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


Witam
Z góry sory za bałagn w kodzie ale jest nowy w php i pisze trochę chaotycznie jeszcze.
Problem polega na tym, że coś nie chce mi trybić w dwóch skryptach, a mianowicie logowanie poprostu nie działa(uzytkownik jest utworzony w bazie prawidłowo) wyświetla mi się komunikat że "Zalogowanie niemozliwe. Należy być zalogowanym aby oglądać te stronę." ktory jest umieszczony w funkcji logowania.

Oto kod funkcji:
funkcja która jest uruchamiana po kliknięciu przycisku zaloguj
  1. <?php
  2.  
  3.  
  4.  
  5. require_once('funkcje_all.php');
  6. $nazwa_uz = $_POST['nazwa_uz'];
  7. $haslo = $_POST['haslo'];
  8.  
  9.  
  10. if ($nazwa_uz && $haslo) {
  11. try {
  12. loguj($nazwa_uz, $haslo);
  13. $_SESSION['prawid_uzyt'] = $nazwa_uz;
  14. }
  15. catch (Exception $e) {
  16. tworz_naglowek_html('Problem:');
  17. menu_top();
  18. tworz_header();
  19.  
  20. tworz_menu();
  21.  
  22.  
  23. echo 'Zalogowanie niemożliwe.
  24. Należy być zalogowanym aby oglądać tę stronę.';
  25. tworz_url('logowanie.php', 'Logowanie');
  26.  
  27.  
  28.  
  29. tworz_stopke();
  30. }
  31. }
  32.  
  33. tworz_naglowek_html('Strona główna');
  34. sprawdz_prawid_uzyt();
  35. tworz_naglowek_html('Problem:');
  36. menu_top();
  37. tworz_header();
  38.  
  39. towrz_menu();
  40.  
  41. if ($tablica_url = pobierz_urle_uzyt($_SESSION['prawid_uzyt'])) {
  42. wyswietl_urle_uzyt($tablica_url);
  43. }
  44.  
  45.  
  46. wyswietl_menu_uzyt();
  47.  
  48.  
  49. tworz_stopke();


funkcja loguj()
  1. function loguj($nazwa_uz, $haslo) {
  2.  
  3. $lacz = lacz_bd();
  4.  
  5.  
  6. $wynik = $lacz->query("select * from uzytkownik
  7. where nazwa_uz='".$nazwa_uz."'
  8. and haslo = sha1('".$haslo."')");
  9. if (!$wynik) {
  10. throw new Exception('Logowanie nie powiodło się.');
  11. }
  12.  
  13. if ($wynik->num_rows>0) {
  14. return true;
  15. } else {
  16. throw new Exception('Logowanie nie powiodło się.');
  17. }
  18. }


Ma ktoś pojęcie co może być nie tak?
Go to the top of the page
+Quote Post
sada
post
Post #2





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


a w bazie napewno masz hasła w sha1?

jeśli tak to sprawdź co dostaniesz jak dodasz to:

  1. echo $wynik->num_rows;exit;

przed
  1. if ($wynik->num_rows>0) {
  2. return true;


Ten post edytował sada 21.08.2011, 13:04:57
Go to the top of the page
+Quote Post
Lampek
post
Post #3





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


Wyrzuca mi 0
Go to the top of the page
+Quote Post
peter13135
post
Post #4





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


0 to liczba rekordów, czyli wpisujesz złe dane. Możliwe, że złe jest kodowanie, pokaż funkcję rejestracji.
Go to the top of the page
+Quote Post
Lampek
post
Post #5





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


  1. function rejestruj($nazwa_uz, $email, $haslo) {
  2.  
  3. $lacz = lacz_bd();
  4.  
  5.  
  6. $wynik = $lacz->query("select * from uzytkownik where nazwa_uz='".$nazwa_uz."'");
  7. if (!$wynik) {
  8. throw new Exception('Wykonanie zapytania nie powiodło się.');
  9. }
  10.  
  11. if ($lacz->num_rows>0) {
  12. throw new Exception('Nazwa użytkownika zajęta — proszę wrócić i wybrać inną.');
  13. }
  14.  
  15.  
  16. $wynik = $lacz->query("insert into uzytkownik values
  17. ('".$nazwa_uz."', sha1('".$haslo."'), '".$email."')");
  18. if (!$wynik) {
  19. throw new Exception('Rejestracja w bazie danych niemożliwa — proszę spróbować później.');
  20. }
  21.  
  22. return true;
  23. }
Go to the top of the page
+Quote Post
sada
post
Post #6





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


jest
  1. if ($lacz->num_rows>0) {

ma być
  1. if ($wynik->num_rows>0) {
Go to the top of the page
+Quote Post
Lampek
post
Post #7





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


Dalej to samo "Zalogowanie niemozliwe. Nalezy byc zalogowanym aby ogladac te strone. "
Go to the top of the page
+Quote Post
peter13135
post
Post #8





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


wyświetl sobie to zapytanie do logowania w throw new exception, następnie je skopiuj i wklej do phpmyadmina i potem myślę będzie już z górki
Go to the top of the page
+Quote Post
sada
post
Post #9





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


zajrzyj do bazy czy coś zapisuje, co zapisuje i czy wogóle łączy lacz_bd() ?
Go to the top of the page
+Quote Post
Lampek
post
Post #10





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


Tak zapisuje np stworzyłem użytkownika login michał, hasło: a2df1e659c9fd2578de0
Go to the top of the page
+Quote Post
sada
post
Post #11





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


kodowanie musisz dodać , polskie literki
Go to the top of the page
+Quote Post
Lampek
post
Post #12





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


Wklepałem w phpmyadmin select * from uzytkownik where nazwa_uz='".$nazwa_uz."' and haslo = sha1('".$haslo."') i wywaliło żę zero wyników.
W tabeli metoda porównywania napisów mam utf8_polish_ci

Ten post edytował Lampek 21.08.2011, 14:43:38
Go to the top of the page
+Quote Post
sada
post
Post #13





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


przed każdym czytaniem i pakowaniem do bazy
  1. $lacz -> query("SET NAMES 'utf8'");


lub strukturalnie dla phpmyadmin
  1. mysql_query("SET NAMES 'utf8'");


Ten post edytował sada 21.08.2011, 14:49:10
Go to the top of the page
+Quote Post
Lampek
post
Post #14





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


Czyli to ma wyglądać tak ?

  1. function rejestruj($nazwa_uz, $email, $haslo) {
  2.  
  3.  
  4.  
  5. $lacz = lacz_bd();
  6. $lacz -> query("SET NAMES 'utf8'");
  7.  
  8. $wynik = $lacz->query("select * from uzytkownik where nazwa_uz='".$nazwa_uz."'");
  9. if (!$wynik) {
  10. throw new Exception('Wykonanie zapytania nie powiodło się.');
  11. }
  12.  
  13. if ($wynik->num_rows>0) {
  14. throw new Exception('Nazwa użytkownika zajęta — proszę wrócić i wybrać innš.');
  15. }
  16. $lacz -> query("SET NAMES 'utf8'");
  17.  
  18. $wynik = $lacz->query("insert into uzytkownik values
  19. ('".$nazwa_uz."', sha1('".$haslo."'), '".$email."')");
  20. if (!$wynik) {
  21. throw new Exception('Rejestracja w bazie danych niemożliwa — proszę spróbować później.');
  22. }
  23.  
  24. return true;
  25. }
  26.  
  27. function loguj($nazwa_uz, $haslo) {
  28.  
  29.  
  30. $lacz = lacz_bd();
  31. $lacz -> query("SET NAMES 'utf8'");
  32.  
  33. $wynik = $lacz->query("select * from uzytkownik
  34. where nazwa_uz='".$nazwa_uz."'
  35. and haslo = sha1('".$haslo."')");
  36. if (!$wynik) {
  37. throw new Exception('Logowanie nie powiodło się.');
  38. }
  39.  
  40.  
  41.  
  42. if ($wynik->num_rows>0) {
  43. return true;
  44. } else {
  45. throw new Exception('Logowanie nie powiodło się.');
  46. }
  47. }
Go to the top of the page
+Quote Post
sada
post
Post #15





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


zgrubsza tak
Go to the top of the page
+Quote Post
Lampek
post
Post #16





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


Dalej to samo :/
Go to the top of the page
+Quote Post
sada
post
Post #17





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


mam nadzieję , że przy próbach kasujesz najpierw ten zapis zbazy, jeśli nie to skasuj , spróbuj jeszcze raz a jeśli nie zatrybi to zamień
  1. $lacz -> query("SET NAMES 'utf8'");

na


  1. $lacz ->set_charset("utf8");


kodowanie strony w (meta) też ma być na UTF-8

Ten post edytował sada 21.08.2011, 15:13:48
Go to the top of the page
+Quote Post
Lampek
post
Post #18





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 7.01.2011

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


Pomogło wykasowałem całą baz i zatrybiło dzięki wielkie.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 14:02