Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]BLad przy logowaniu
Forum PHP.pl > Forum > Przedszkole
meteseron2
Witam posiadam taki o to skrypt logowania
  1. <?php
  2. include_once('config.php');
  3.  
  4. // sprawdzamy czy user nie jest przypadkiem zalogowany
  5. if(!$_SESSION['logged']) {
  6. // jeœli zostanie naciœnięty przycisk "Zaloguj"
  7.  
  8. $name = (isset($_POST['name'])
  9. && !empty($_POST['name']))
  10. ? clear($_POST['name'])
  11. : null;
  12.  
  13. $password = (isset($_POST['password'])
  14. && !empty($_POST['password']))
  15. ? clear($_POST['password'])
  16. : null;
  17.  
  18. if($name != null && $password != null) {
  19. $mysqli = new mysqli(DBHOST, DBUSER, DBPASS, DBUSER);
  20. // filtrujemy dane...
  21. // sprawdzamy prostym zapytaniem sql czy podane dane sš prawidłowe
  22. if($result = $mysqli->query("SELECT * FROM `users` WHERE `user_name` = \'$name\' AND `user_password` = \'$password\' LIMIT 1") && $result->num_rows > 0) {
  23. // jeœli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
  24. $row = mysql_fetch_assoc($result);
  25. $_SESSION['logged'] = true;
  26. $_SESSION['user_id'] = $row['user_id'];
  27. echo '<p>Zostales poprawnie zalogowany! Mozesz teraz przejsc na <a href="index.php">strone glowna!</a>.</p>';
  28. } else {
  29. echo '<p>Podany login i/lub hasło jest nieprawidłowe.</p>';
  30. }
  31. $mysqli->close();
  32. }
  33.  
  34. // wyœwietlamy komunikat na zalogowanie się
  35. echo '<form method="post" action="login.php">
  36. <p>
  37. Login:<br>
  38. <input type="text" value="'.$name.'" name="name">
  39. </p>
  40. <p>
  41. Hasło:<br>
  42. <input type="password" value="'.$password.'" name="password">
  43. </p>
  44. <p>
  45. <input type="submit" value="Zaloguj">
  46. </p>
  47. </form>';
  48. } else {
  49. echo '<p>Jesteœ już zalogowany, więc nie możesz się zalogować ponownie.</p>
  50. <p>[<a href="index.php">Powrót</a>]</p>';
  51. }
  52.  
  53. ?>
Problem polega w tym, że gdy wpisuje login i haslo które mam w bazie danych mimo wszystko wywala błąd czy ktos wie w czym lezy problem?
KsaR
Linijka 22 ma 2 błędy:
1. Sql injection (koniecznie poczytaj co to, oraz instrukcje preparowane mysqli !)
2. Ta zmienna $result powinna byc w nawiasie (jak nizej) ale moge sie mylic.
  1. if (($result = $mysqli->query("SELECT * FROM `users` WHERE `user_name` = \'$name\' AND `user_password` = \'$password\' LIMIT 1")) && $result->num_rows > 0) {


Dobra, a teraz podaj jaki błąd bo nie wywróże za ciebie tongue.gif
com
@up jeden i drugi ten warunek if wgl nie powinien tak wyglądać, najpierw robisz zapytanie potem sprawdzasz, bo w tym miejscu ta zmienna wgl nie istnieje wink.gif
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.