Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]problem z logowaniem z wykorzystaniem bazy
Forum PHP.pl > Forum > Przedszkole
-lukasz-
witam mam pewniem problem ze zrobieniem logowania do strony

na serwerze lua.pl pod adresem
  1. http://drake2.lua.pl/strona13/
można zobaczyć logowanie

proces rejestracji działa, rejestruje się, podaje imie, nazwisko, meila, hasło
na meila dostaje link z aktywacją konta

proces aktywacji działa. aktywuje konto i jest ok.


sprawdzam w bazie danych. w tabeli users mam przykładowe wpisy z rejestracji. czyli wszystko jest OK. Baza nie jest pusta.


a więc próbuje się zalogować. logowanie jest przez podanie meila i hasła
podaje te dane i wyskakuje mi komunikat że podałem złe dane. że dane nie pokrywają się z podanymi w rejestracji, a więc znajdującymi się w bazie mysql

dlaczego tak jest?
co mam poprawić?
proszę o pomoc

możecie sami sprawdzić proces rejestracji pod adresem http://drake2.lua.pl/strona13/ wpisując fikcyjne dane, ale właściwy mail, aby link aktywacyjny doszedł


poniżej prezentuje wpisy pliku login.php
  1. <?php # Skrypt 13.8 - login.php 
  2. // Strona umożliwiająca zalogowanie się w witrynie. 
  3.  
  4. // Dołączamy plik konfiguracyjny z procedurami obsługi błędów. 
  5. require_once ('./includes/config.inc.php');
  6.  
  7. // Ustawiamy tytuł strony i dołączamy nagłówek HTML. 
  8. $page_title = 'Logowanie'; 
  9. include ('./includes/header.html'); 
  10.  
  11. if (isset($_POST['submitted'])) { // Sprawdzamy, czy formularz został przesłany. 
  12.  
  13. require_once ('./includes/mysql_connect.php'); // Łączymy się z bazą danych. 
  14.  
  15. // Sprawdzamy poprawność adresu e-mail.  
  16. if (!empty($_POST['email'])) { 
  17. $e = escape_data($_POST['email']); 
  18. } else { 
  19. echo '<p><font color="red" size="+1">Zapomniałeś podać adres email!</font></p>'; 
  20. $e = FALSE; 
  21. } 
  22.  
  23. // Sprawdzamy poprawność hasła. 
  24. if (!empty($_POST['pass'])) { 
  25. $p = escape_data($_POST['pass']); 
  26. } else { 
  27. $p = FALSE; 
  28. echo '<p><font color="red" size="+1">Zapomniałeś podać hasło!</font></p>'; 
  29. } 
  30.  
  31. if ($e && $p) { // Jeśli wszystko jest w porządku... 
  32.  
  33. // Wysyłamy zapytanie do bazy danych. 
  34. $query = "SELECT user_id, first_name FROM users WHERE (email='$e' AND pass=SHA('$p')) AND active IS NULL";  
  35. $result = mysql_query ($query) or trigger_error("Zapytanie: $query\n<br />Błąd MySQL: " . mysql_error()); 
  36.  
  37. if (@mysql_num_rows($result) == 1) { // Znaleziono pasujący rekord. 
  38.  
  39. // Rejestrujemy wartości i przekierowujemy użytkownika. 
  40. $row = mysql_fetch_array ($result, MYSQL_NUM);
  41. mysql_free_result($result); 
  42. mysql_close(); // Zamykamy połączenie z bazą danych. 
  43. $_SESSION['first_name'] = $row[1]; 
  44. $_SESSION['user_id'] = $row[0]; 
  45.  
  46. // Zaczynamy definicję adresu URL. 
  47. $url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']); 
  48. // Sprawdzamy końcowy ukośnik. 
  49. if ((substr($url, -1) == '/') OR (substr($url, -1) == '') ) { 
  50. $url = substr ($url, 0, -1); // Odcinamy ukośnik. 
  51. // Dodajemy stronę. 
  52. $url .= '/index.php'; 
  53.  
  54. ob_end_clean(); // Usuwamy bufor. 
  55. header("Location: $url"); 
  56. exit(); // Kończymy działanie skryptu.  
  57. } else { // Nie znaleziono pasującego rekordu. 
  58. echo '<p><font color="red" size="+1">Adres e-mail i hasło nie pasują do przechowywanych w bazie danych albo jeszcze nie uaktywniłeś swojego konta.</font></p>';
  59.  
  60. } else { // Jeśli coś jest nie w porządku... 
  61. echo '<p><font color="red" size="+1">Spróbuj jeszcze raz.</font></p>';  
  62.  
  63. mysql_close(); // Zamykamy połączenie z bazą danych. 
  64.  
  65. } // Koniec instrukcji warunkowej sprawdzającej, czy formularz został przesłany. 
  66. ?> 
  67.  
  68. <h1>Logowanie</h1> 
  69. <p>Aby się zalogować, musisz zezwolić na przyjmowanie plików cookie.</p> 
  70. <form action="login.php" method="post"> 
  71. <fieldset> 
  72. <p><b>Adres e-mail:</b> <input type="text" name="email" size="20" maxlength="40" value="<?php if (isset($_POST['email'])) echo $_POST['email']; ?>" /></p> 
  73. <p><b>Hasło:</b> <input type="password" name="pass" size="20" maxlength="20" /></p> 
  74. <div align="center"><input type="submit" name="submit" value="Logowanie" /></div> 
  75. <input type="hidden" name="submitted" value="TRUE" /> 
  76. </fieldset> 
  77. </form> 
  78.  
  79. <?php // Dołączamy stopkę HTML. 
  80. include ('./includes/footer.html); 
  81. ?>
Pilsener
SELECT user_id, first_name FROM users WHERE (email='$e' AND pass=SHA('$p'))

Metodologia powinna być taka:

"SELECT user_id, first_name, pass FROM users WHERE email='$e'"

Pobierasz z bazy dane dla konkretnego email i dopiero wtedy sprawdzasz, czy hasło & email jest zgodne z tym, które ktoś wpisał w formularzu.
-lukasz-
może coś jaśniej

wystarczy zamiana tej linijki?

jak to powinno wyglądać?
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.