Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie nie działa
Forum PHP.pl > Forum > Przedszkole
porywacz
Hejka, napisałem skrypt logowania ale nie chce mi działać. Loguje mnie niezależnie od tego czy wpisuje poprawne dane do pola loginu i hasła ;(
Proszę o pomoc smile.gif
  1. <?php session_start();
  2.  
  3. $login = $_POST['login'];
  4. $haslo = $_POST['password'];
  5. $login = stripslashes($login);
  6. $haslo = stripslashes($haslo);
  7.  
  8. include('connect_mysql.php');
  9.  
  10. $login = mysql_real_escape_string($login);
  11. $haslo = mysql_real_escape_string($haslo);
  12.  
  13. if(isset($login)) {
  14. if(empty($login) or empty($haslo)) {
  15. echo('Logowanie nie powiodło się musisz wypełić szystkie pola!');
  16. } elseif(!empty($login) && !empty($haslo)) {
  17. $haslo_md5 = md5($haslo);
  18.  
  19. $users_login = mysql_query("select count(*) from `uzytkownicy` where `login` = '".$login."'");
  20. $users_haslo = mysql_query("select count(*) from `uzytkownicy` where `haslo` = '".$haslo_md5."'");
  21.  
  22. $count_login = mysql_num_rows($users_login);
  23. $count_haslo = mysql_num_rows($users_haslo);
  24.  
  25. if($count_login = 1 && $count_haslo = 1) {
  26. $_SESSION['login'] = $login;
  27.  
  28. echo('Pomyślnie zalogowałeś się jako <font color="red"> '.$_SESSION['login'].'</font>.');
  29. } else {
  30. echo('Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś wszystkie pola.');
  31. }
  32. }
  33. }
  34. ?>
binprogrammer
Może zamiast tego

  1. $users_login = mysql_query("select count(*) from `uzytkownicy` where `login` = '".$login."'");
  2. $users_haslo = mysql_query("select count(*) from `uzytkownicy` where `haslo` = '".$haslo_md5."'");


daj to,

  1. $users_login = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM `uzytkownicy` WHERE `login` = '$login'"));
  2. $users_login = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM `uzytkownicy` WHERE `haslo` = '$haslo_md5'"));


Spróbuj i powiedz co wyszło Filipie smile.gif

klocu
Metoda jest delikatnie mówiąc... bez sensu.
Bo sprawdzając w bazie ilość hash'y md5 podanego hasła możesz przypadkiem otrzymać wartość większa niż 1.
Raczej lepiej jest to załatwić jednym zapytaniem i przebudować całość.

a to:
  1. if($count_login = 1 && $count_haslo = 1)
nie jest poprawnym zapisaniem warunku, który jak sądzę chcesz uzyskać.

dalej:
  1. if(isset($login))
będzie spełnione bo sam definiujesz daną zmienną, a że będzie mieć wartość NULL. ale istnieć będzie.
porywacz
klocu, w takim razie jak powinienem napisać ten skrypt? Może podasz coś konkretnego bo jestem początkującym programistą php i nie znam się na tym tak dobrze smile.gif)

Ktoś w końcu pomoże? sad.gif Klocu napisz coś więcej :/

questionmark.gifquestionmark.gif?
Posio
Zamiast:
  1. if(isset($login))
zrób:
  1. if(isset($_POST['login']))


użyj:
  1. $sql = SELECT * FROM ... WHERE `login` = '$login'

potem:
  1. if($sql){
  2. if($pobranehaslo === $haslo_md5) { $_SESSION....... } else { echo 'Blabala'; }
  3. }
  4.  


Mam nadzieje ze rozumiesz jak to powinno wyglądać... Na tacy Ci nie podam smile.gif
porywacz
A co to jest to pobrane hasło? Hasło wyciągnięte z bazy?

Zrobiłem tak:

  1. <?php session_start();
  2.  
  3. $login = $_POST['login'];
  4. $haslo = $_POST['password'];
  5. $login = stripslashes($login);
  6. $haslo = stripslashes($haslo);
  7.  
  8. include('connect_mysql.php');
  9.  
  10. $login = mysql_real_escape_string($login);
  11. $haslo = mysql_real_escape_string($haslo);
  12. $haslo = md5($haslo); // Szyfrowanie hasła
  13.  
  14. if(isset($_POST['login'])) {
  15. if(empty($login) or empty($haslo)) {
  16. echo('Logowanie nie powiodło się musisz wypełić szystkie pola!');
  17. }
  18. //* *//
  19.  
  20. $sql = mysql_query("select * from `uzytkownicy` where `login` = '$login'");
  21. if($sql){
  22. $pobranehaslo = mysql_query("select `haslo` from `uzytkownicy` where `login` = '".$login."'");
  23.  
  24. if($pobranehaslo === $haslo_md5) {
  25. $_SESSION['login'] = $login;
  26. echo('Pomyślnie zalogowałeś się jako <font color="red"> '.$_SESSION['login'].'</font>.');
  27. } else {
  28. echo('Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś wszystkie pola.');
  29. }
  30. }
  31. }
  32. ?>

I nie loguje mnie na żadnych passach. Zrobiłem coś źle? biggrin.gif
Posio
  1. <?php session_start();
  2.  
  3. include('connect_mysql.php');
  4.  
  5. if(isset($_POST['login'])) {
  6.  
  7. $login = $_POST['login'];
  8. $haslo = $_POST['password'];
  9. $login = stripslashes($login);
  10. $haslo = stripslashes($haslo);
  11. $login = mysql_real_escape_string($login);
  12. $haslo = mysql_real_escape_string($haslo);
  13. $haslo = md5($haslo);
  14.  
  15. if(empty($login) or empty($haslo)) {
  16. echo('Logowanie nie powiodło się musisz wypełić szystkie pola!');
  17. }
  18. //* *//
  19.  
  20. $sql = mysql_query("select * from `uzytkownicy` where `login` = '$login'");
  21. $result = mysql_fetch_assoc($sql);
  22. if($sql){
  23. $pobranehaslo = $result['haslo'];
  24. if($pobranehaslo === $haslo) {
  25. $_SESSION['login'] = $login;
  26. echo('Pomyślnie zalogowałeś się jako <font color="red"> '.$_SESSION['login'].'</font>.');
  27. } else {
  28. echo('Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś wszystkie pola.');
  29. }
  30. }
  31. }
  32. ?>



Nie wiem czy dziala - nie sprawdzalem i psize z telefonu. Mogły sie wkraść jakieś literówki etc.
Rozumiem że w bazie danych hasło też masz kodowane w md5 ?
Jeśli nie ( można wnioskować po twoich umiejętnościach, że mogłes to przeoczyć), do bazy wsadzaj zakodowane hasło - powinno zadziałać.
porywacz
Super, działa, bardzo ci dziękuję pysio biggrin.gif Hasło sprawdzałem już na początku czy poprawnie się zapisuje w bazie ;D Programuję w php od bardzo niedawna więc nie spodziewaj się nie wiadomo jakich umiejętności hehe ;D
Pozdro wszystkim i dzięki za pomoc ^^
Posio
-,- Posio... i jest taki przyciesk jak "Pomógł"
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.