Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Nie chce się zalogować
Forum PHP.pl > Forum > Przedszkole
Yogin
Gdy próbuję się zalogować, to ponownie wyskakuje mi ponownie formularz uwierzytelnienia, pomimo wprowadzenia poprawnych danych. Testy prowadzę na locallhoście a dokładniej na pakiecie XAMPP.

  1.  
  2. <?php
  3.  
  4. if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
  5. // Użytkownik nie wpisał nazwy użytkownika i hasła, dlatego trzeba wysłać nagłowki uwierzytelnienia.
  6. header('HTTP/1.1 401 Unauthorized');
  7. header('WWW-Authenticate: Basic realm=Stronawww"');
  8. exit('Musisz podać nazwę użytkownika i hasło, aby się zalogować i uzyskać dostęp do strony.');
  9. }
  10.  
  11. //Łączenie z bazą danych
  12. $dbc = mysqli_connect ('locallhost', 'root', ' ', 'strona');
  13.  
  14. //Pobieranie danych logowania
  15. $user_username = mysqli_real_escape_string($dbc, trim($_SERVER['PHP_AUTH_USER']));
  16. $user_password = mysqli_real_escape_string($dbc, trim($_SERVER['PHP_AUTH_PW']));
  17.  
  18.  
  19. //Wyszukiwanie nazwy i hasła w bazie danych
  20. $query = "SELECT username FROM tabela_logowania WHERE username = ' .$user_username.' AND password = SHA(' .$user_password. ')";
  21. $data = mysqli_query($dbc,$query);
  22.  
  23.  
  24. if (mysqli_num_rows($data) == 1) {
  25. // Dane są porawne, zostanie przypisana nazwa użytkownika
  26. $row = mysqli_fetch_array($data);
  27. $username = $row['username'];
  28. }
  29. else {
  30. //Nie prawidłowe dane
  31. header('HTTP/1.1 401 Unauthorized');
  32. header('WWW-Authenticate: Basic realm=Stronawww"');
  33. exit('Musisz podać nazwę użytkownika i hasło, aby się zalogować i uzyskać dostęp do strony.');
  34. }
  35.  
  36. // Potwierdzenie zalogowania
  37. echo('<p>Zagowany użytkownik: ' .$username. '</p>');
  38.  
  39. ?>



Gdy kliknę przycisk "Anuluj" w oknie uwierzytelnienia, to wywala mi błąd nie wiem czy dobrze rozumiem go ale chyba o to chodzi że są podane złe dane które łączą się z bazą danych, sprawdziłem i są dobre.

To są te błędy:

  1. Warning: mysqli_connect() [FUNCTION.mysqli-connect]: php_network_getaddresses: getaddrinfo failed: Nieznany host. IN E:\xampp\htdocs\strona\logowanie.php ON line 10
  2.  
  3. Warning: mysqli_connect() [FUNCTION.mysqli-connect]: [2002] php_network_getaddresses: getaddrinfo failed: Nieznany host. (trying TO connect via tcp://locallhost:3306) IN E:\xampp\htdocs\strona\logowanie.php ON line 10
  4.  
  5. Warning: mysqli_connect() [FUNCTION.mysqli-connect]: (HY000/2002): php_network_getaddresses: getaddrinfo failed: Nieznany host. IN E:\xampp\htdocs\strona\logowanie.php ON line 10
  6.  
  7. Warning: mysqli_real_escape_string() expects parameter 1 TO be mysqli, BOOLEAN given IN E:\xampp\htdocs\strona\logowanie.php ON line 13
  8.  
  9. Warning: mysqli_real_escape_string() expects parameter 1 TO be mysqli, BOOLEAN given IN E:\xampp\htdocs\strona\logowanie.php ON line 14
  10.  
  11. Warning: mysqli_query() expects parameter 1 TO be mysqli, BOOLEAN given IN E:\xampp\htdocs\strona\logowanie.php ON line 19
  12.  
  13. Warning: mysqli_num_rows() expects parameter 1 TO be mysqli_result, NULL given IN E:\xampp\htdocs\strona\logowanie.php ON line 22
  14. Musisz podać nazwę użytkownika i hasło, aby się zalogować i uzyskać dostęp do strony.
nospor
Czytasz w ogole komunikaty błędów?

Co to jest locallhost? Ja słyszałem jedynie o localhost

Kolejny błąd jaki masz to błąd zapytania. teksty w mysql bierze się w apostrofy a nie w nic.
Yogin
Poprawiłem to co należało i teraz już nie pokazuje mi błędu tylko komunikat - "Musisz podać nazwę użytkownika i hasło, aby się zalogować i uzyskać dostęp do strony."

Dlaczego? Dane logowania podaję poprawne.
nospor
To pokaż kod po poprawkach żebyśmy wiedzieli na czym stoimy.
Dodatkowo zastosuj się do wskazówek z tego tematu:
Temat: Jak poprawnie zada pytanie
Yogin
  1. <?php
  2.  
  3. if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
  4. // Użytkownik nie wpisał nazwy użytkownika i hasła, dlatego trzeba wysłać nagłowki uwierzytelnienia.
  5. header('HTTP/1.1 401 Unauthorized');
  6. header('WWW-Authenticate: Basic realm=Stronawww');
  7. exit('Musisz podać nazwę użytkownika i hasło, aby się zalogować i uzyskać dostęp do strony.');
  8. }
  9.  
  10. //Łączenie z bazą danych
  11. $dbc = mysqli_connect ('localhost', 'root', 'kacper', 'strona');
  12.  
  13. //Pobieranie danych logowania
  14. $user_username = mysqli_real_escape_string($dbc, trim($_SERVER['PHP_AUTH_USER']));
  15. $user_password = mysqli_real_escape_string($dbc, trim($_SERVER['PHP_AUTH_PW']));
  16.  
  17.  
  18. //Wyszukiwanie nazwy i hasła w bazie danych
  19. $query = "SELECT 'username' FROM 'tabela_logowania' WHERE 'username' = ' .$user_username.' AND 'password' = SHA(' .$user_password. ')";
  20. $data = mysqli_query($dbc,$query);
  21.  
  22.  
  23. if (mysqli_num_rows($data) == 1) {
  24. // Dane są porawne, zostanie przypisana nazwa użytkownika
  25. $row = mysqli_fetch_array($data);
  26. $username = $row['username'];
  27. }
  28. else {
  29. //Nie prawidłowe dane
  30. header('HTTP/1.1 401 Unauthorized');
  31. header('WWW-Authenticate: Basic realm=Stronawww');
  32. exit("Musisz podać nazwę użytkownika i hasło, aby się zalogować i uzyskać dostęp do strony. ");
  33. }
  34.  
  35. // Potwierdzenie zalogowania
  36. echo("<p>Zagowany użytkownik: '.$username.' </p>");
  37.  
  38. ?>


Znowu zaczął mi wyskakiwać jakiś błąd ten poniżej:

Cytat
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in E:\xampp\htdocs\strona\logowanie.php on line 23
Musisz podać nazwę użytkownika i hasło, aby się zalogować i uzyskać dostęp do strony.


Wydaje mi się że oznacza to tyle ze query() zwrocila false (blad w zapytaniu?), num_rows dostał to jako param (a chcial cos innego) i stąd bład.

Moja baza danych wygląda tak:

Cytat
DB_HOST - localhost
DB_USER - root
DB_PASSWORD - kacper
DB_NAME - strona ( w której jest tabela o nazwie: "tabela_logowania" a w niej kolumny "username" i "password".


Chcę zauważyć że jestem można powiedzieć raczkujący w PHP, dlatego sprawia mi to takie trudności, ale chcę w końcu dojść do tego co jest nie tak.
Przepraszam jeśli za spamowałem trochę, ale chcę wszystko dokładnie wyjaśnić.
Pozdrawiam i dziękuję za odpowiedzi. oneeyedsmiley02.png
nospor
1) Miałeś wziąść tekst w apostrofy a nie nazwy kolumn.....
nie:'username' = ' .$user_username.'
a: username = \'' .$user_username.'\'
Analogicznie reszta.

2) W temacie co ci podałem było napisane, że masz wyswietlac jak wyglada zapytanie i masz wyswietlac blad zapytania. Czy tam po chinsku jest napisane?

3)
Cytat
Chcę zauważyć że jestem można powiedzieć raczkujący w PHP, dlatego sprawia mi to takie trudności,
A ja chcę zaznaczyć, że temat do którego cię odesłałem zawiera parę banalnych wskazówek napisanych po polsku czyli w Twoim ojczystym języku.
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.