Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dziwny problem z logowanie PDO
Forti
post 6.06.2014, 12:54:58
Post #1





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Witam

Cały swój projekt zmieniam na biblioteki PDO (dużo roboty z tym mam) i często wyskakują mi błędy. Generalnie z wszystkim sobie radzę, ale nad systemem logowania siedze od godziny i już brakuje mi pomysłów. Skrypt jest od turson (turson.pl).

Rejestracja działą prawidłowo, wszystko zapisuje do bazy itp.

plik config jest require w index.php, tam natomiast include rejestracja i logowanie. (rejestracja działa, jak już pisałem)

  1. <?PHP
  2. //Formularz rejestracji
  3. function form(){
  4. echo '
  5. <form method="post" action="">
  6. <label for="login">Login:</label>
  7. <input maxlength="32" type="text" name="login" id="login" />
  8.  
  9. <label for="pass">Hasło:</label>
  10. <input maxlength="32" type="password" name="password" id="pass" />
  11.  
  12. <label for="pass_again">Hasło (ponownie):</label>
  13. <input maxlength="32" type="password" name="password2" id="pass_again" />
  14.  
  15. <label for="email">Email:</label>
  16. <input type="text" name="email" maxlength="50" id="email" />
  17.  
  18. <label for="email_again">Podaj swój Battle.tag: (nie wymagane)</label>
  19. <input type="text" maxlength="255" name="battle" id="btag" />#<input type="text" maxlength="255" name="tag" id="btag" /><br />
  20.  
  21.  
  22. <input type="submit" name="wyslano" value="Zarejestruj" />
  23. </form>
  24.  
  25. ';
  26. }
  27.  
  28.  
  29. if(isset($_POST['wyslano'])){ //Sprawdzamy, czy submit został wciśnięty
  30. //Usuwamy białe znaki z przesłanych danych
  31. $login = trim($_POST['login']);
  32. $password = trim($_POST['password']);
  33. $password2 = trim($_POST['password2']);
  34. $email = trim($_POST['email']);
  35. $battle = trim($_POST['battle']);
  36. $tag = trim($_POST['tag']);
  37.  
  38. $errors = NULL; //Tworzymy zmienną przechowująca ewentualne błędy
  39.  
  40. //Sprawdzamy, czy przesłane dane mają odpowiednią ilość znaków
  41. if(strlen($login)<3) $errors .= 'Login musi zawierać co najmniej 3 znaki<br>';
  42. if(strlen($password)<6) $errors .= 'Hasło musi zawierać co najmniej 6 znaków<br>';
  43. if($password!==$password2) $errors .= 'Hasła nie są takie same<br>';
  44. if(!preg_match('/\@/', $email) || strlen($email)<5) $errors .= 'Podany adres e-mail jest nieprawidłowy<br>';
  45.  
  46. //Sprawdzamy czy użytkownik o takim samym loginie już nie istnieje
  47. $stmt = $baza->prepare("SELECT COUNT(id) FROM users WHERE login=:login");
  48. $stmt->bindValue(":login", $login, PDO::PARAM_STR);
  49. $stmt->execute();
  50. $row = $stmt->fetch();
  51. if($row[0]>0) $errors .= 'Konto o takim loginie już istnieje<br>';
  52.  
  53. //Sprawdzamy czy użytkownik o takim samym adresie e-mail już nie istnieje
  54. $stmt2 = $baza->prepare("SELECT COUNT(id) FROM users WHERE email=:email");
  55. $stmt2->bindValue(":email", $email, PDO::PARAM_STR);
  56. $stmt2->execute();
  57. $row2 = $stmt2->fetch();
  58. if($row2[0]>0) $errors .= 'Konto o takim adresie e-mail już istnieje<br>';
  59.  
  60. if(empty($errors)){ //Jeśli nie ma błędów, rejestrujemy użytkownika
  61. $password = sha1($password); //kodujemy hasło
  62. $dodaj = $baza->prepare("INSERT INTO users (login, pass, email, date, battle, tag) VALUES(:login, :password, :email, NOW(), :battle, :tag)");
  63. $dodaj->bindValue(":login", $login, PDO::PARAM_STR);
  64. $dodaj->bindValue(":password", $password, PDO::PARAM_STR);
  65. $dodaj->bindValue(":email", $email, PDO::PARAM_STR);
  66. $dodaj->bindValue(":battle", $battle, PDO::PARAM_STR);
  67. $dodaj->bindValue(":tag", $tag, PDO::PARAM_STR);
  68. $dodaj->execute();
  69. echo "Zarejestrowałeś się. Możesz się teraz <a href=\"login.php\">zalogować</a>";
  70. }
  71. else{
  72. echo '<div style="color:red">'.$errors.'</div>';
  73. form(); //Wyświetlamy formularz
  74. }
  75. }
  76. else form();
  77. ?>


A o to logowanie:

  1. <?PHP
  2. //Formularz logowania
  3. function form(){
  4. echo '
  5. <form action="" method="post">
  6. <label for="login">Login</label>
  7. <input type="text" name="login" required>
  8. <br>
  9. <label for="password">Hasło</label>
  10. <input type="password" name="pass" required>
  11. <br>
  12. <input type="submit" name="wyslano" value="Zaloguj się"/>
  13. </form>
  14. ';
  15. }
  16.  
  17. if(isset($_POST['wyslano'])){ //Sprawdzamy, czy submit został wciśnięty
  18. //Usuwamy białe znaki z przesłanych danych
  19. $login = trim($_POST['login']);
  20. $pass = trim($_POST['pass']);
  21.  
  22. //Kodujemy hasło - przy rejestracji również je zakodowaliśmy, wiec przy porównywaniu musi być zakodowane
  23. $pass = sha1($pass);
  24.  
  25.  
  26. //Sprawdzamy czy użytkownik o podanych danych istnieje
  27. $stmt = $baza->prepare("SELECT login, pass FROM users WHERE login=:login AND pass=:pass");
  28. $stmt->bindValue(":login", $login, PDO::PARAM_STR);
  29. $stmt->bindValue(":pass", $pass, PDO::PARAM_STR);
  30. $stmt->execute();
  31. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  32. if($stmt->rowCount()!=0){
  33. echo "Zalogowałeś się!";
  34. /*
  35.   * Tworzymy sesję dla zalogowanego uzytkownika z:
  36.   * - informacja, ze uzytkownik jest zalogowany
  37.   * - jego id
  38.   */
  39. $_SESSION['logged'] = true;
  40. $_SESSION['user_id'] = $row['id'];
  41.  
  42. }
  43. else{
  44. echo '<div style="color:red">Login i/lub hasło są nieprawidłowe</div>';
  45. form();
  46. }
  47. }
  48. else form();
  49. ?>



Problem: po wpisaniu login i pass pokazuje Login i/lub hasło są nieprawidłowe.
Tak, tak, ale sytuacja taka, że login i hasło są na 100% prawidłowe. Założyłem już 11 kont i wszędzie ten sam problem. Już nie wiem na co patrzeć...

Struktura bazy danych:

users
id - login - pass - email - date - battle - tag - grupa (interesuje nas przy logowaniu tylko login i pass, prawda?)


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:30