Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Logowanie, sesje, baza danych
Forum PHP.pl > Forum > Przedszkole
jacke
Hej, mam taki oto banalnie prosty skrypt logowania:
  1. <?php session_start();
  2.  
  3. $login = "test";
  4. $pass = "test";
  5.  
  6. if(isset($_SESSION['zalogowany']))
  7. {
  8. echo "You are logged on. <br />";
  9. echo "<a href=\"?logout=true\">Log out</a><br />";
  10. if(@$_GET['logout'] == "true")
  11. {
  12. echo "You are now logged off. Reload page.";
  13. }
  14. }
  15. else
  16. {
  17. if(isset($_POST['zaloguj']))
  18. {
  19. if($_POST['login'] == $login && $_POST['pass'] == $pass)
  20. {
  21. echo "You have just been logged on, reload page";
  22. $_SESSION['zalogowany'] = $login;
  23. }
  24. else
  25. {
  26. echo "incorrect data";
  27. }
  28. }
  29. else
  30. {
  31. echo "You aren ot logged on, please login";
  32. echo "<form method=\"post\">";
  33. echo "Login: <input type=\"text\" name=\"login\">";
  34. echo "Password: <input type=\"text\" name=\"pass\">";
  35. echo "<input type=\"submit\" name=\"zaloguj\" value=\"zaloguj\">";
  36. echo "</form>";
  37. }
  38. }
  39. ?>


Teraz, jak się mam zabrać za to, aby login oraz hasło było pobierane z bazy danych? Na chwilę obecną jest pre-definiowane na początku skryptu, a taki układ nie jest żadnym rozwiązaniem.

Próbowałem na kilka sposobów, ale chyba za każdy się zabierałem od d^py strony bo nic mi z tego nie wyszło.

Potrzebuję waszej pomocy! blinksmiley.gif
emajl22
google > logowanie mysql/php = "Około 15,200,000 wyników"
jacke
Akurat ten punkt przebrnąłem i jak by to było rozwiązaniem, nie pisałbym. Jestem w sumie trochę zielony...

Jak pod to podstawić wynik z zapytania mysql?
  1. {
  2. if(isset($_POST['zaloguj']))
  3. {
  4. if($_POST['login'] == $login && $_POST['pass'] == $pass)
  5. {
  6. echo "You have just been logged on, reload page";
  7. $_SESSION['zalogowany'] = $login;
  8. }


Nie pytam o gotowca, bo nie w tym rzecz polega, wiem również że pewnie jest to jedna z bardziej podstawowych rzeczy, ale po prostu nie wiem jak się mam za to zabrać. Przebrnąłem przez naprawdę wiele skryptów logowania, ale albo były sesje bez pobierania rekordów z mysql, albo były skryty kombajny, albo były zwykłe logowania bez sesji. Dlatego też przyszedłem pytać tutaj o pomoc.
d3ut3r
  1. {
  2. if(isset($_POST['zaloguj']))
  3. {
  4. /*
  5.   W tym miejscu robisz zapytanie do bazy:
  6.   SELECT login,haslo FROM uzytkownicy WHERE login = $login
  7.   gdzie zmienna $login pochodzi z formularza (tylko ją zabezpiecz żeby atak nie był podatny na SQL Injection
  8.   następnie pobierasz rekord i w warunku zamiast $login i $pass wstawiasz swoje wartości podane z bazy
  9.   */
  10. if($_POST['login'] == $login && $_POST['pass'] == $pass)
  11. {
  12. echo "You have just been logged on, reload page";
  13. $_SESSION['zalogowany'] = $login;
  14. }


Dodałem komentarz gdzie możesz pobrać dane ale hasło nie szyfrowane ? od razu lepiej sobie odpuścić i na samym początku hashować hasła np przez sha1.
jacke
Heh, jak zwykle im później tym mózg bardziej trzeźwy. Jakoś sobie w końcu dałem radę.

Wklejam kod, jakby jakaś zaginiona dusza kiedyś czegoś podobnego szukała.

  1. <?php session_start();
  2.  
  3. require "req/dbconnect.php";
  4. connection();
  5.  
  6. @$login = $_POST['login'];
  7. @$pass = $_POST['pass'];
  8.  
  9. @$sql = mysql_query("SELECT login, password FROM users WHERE password='$pass' and login='$login'");
  10. $num = mysql_num_rows($sql);
  11.  
  12. if(isset($_SESSION['zalogowany']))
  13. {
  14. echo "You are logged on. <br />";
  15. echo "<a href=\"?logout=true\">Log out</a><br />";
  16. if(@$_GET['logout'] == "true")
  17. {
  18. echo "You are now logged off. Redirecting.";
  19. header("Refresh: 1; URL=index.php");
  20. }
  21. }
  22. else
  23. {
  24. if(isset($_POST['zaloguj']))
  25. {
  26. if($num == "1")
  27. {
  28. echo "You have just been logged on. Redirecting";
  29. $_SESSION['zalogowany'] = $login;
  30. header("Refresh: 1; URL=index.php");
  31. }
  32. else
  33. {
  34. echo "incorrect data";
  35. }
  36. }
  37. else
  38. {
  39. echo "You aren ot logged on, please login";
  40. echo "<form method=\"post\">";
  41. echo "Login: <input type=\"text\" name=\"login\">";
  42. echo "Password: <input type=\"text\" name=\"pass\">";
  43. echo "<input type=\"submit\" name=\"zaloguj\" value=\"zaloguj\">";
  44. echo "</form>";
  45. }
  46. }
  47. ?>


O, a odpowiedzi nie zauważyłem.

Owszem, kodowanie dorzucę, haszowanie, zabezpieczenia przed sql injection, wszystko w swoim czasie. Choć z drugiej strony, nie robię tego pod konkretny projekt, stronę or whatever. Po prostu bawię się mysqlem i php ;)
Mephistofeles
  1. @$sql

Co to za składnia? Do czego ta @?

Zapomnij o mysql_, dzisiaj od tego jest PDO.
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.