Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Początki w PHP OOP - logowanie
Panicz74
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 28.08.2015

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


Witam,

Potrzebuje pomocy. Staram się obiektowo napisać skrypt logowania. Nie wiem dlaczego zaraz po załadowaniu index.php zmienna $_SESSION['logged'] równa jest true oraz widzę napis "Zalogowano". Przecież nie wprowadzono jeszcze nic do formularza. Przez to nie może wykonać się funkcja login. Czy moglibyście jakoś mnie nakierować na dobre tory?

index.php:
  1. <?php
  2.  
  3. require_once 'core/init.php';
  4.  
  5. $logowanie = DB::getInstance();
  6.  
  7. $login = trim($_POST['login']);
  8. $password = trim($_POST['password']);
  9.  
  10. $logowanie->login($login, $password);
  11. print_r($_SESSION['logged']);
  12. if($_SESSION['logged'])
  13. {
  14. echo "Zalogowano";
  15. }
  16. else
  17. {
  18. echo "Nie zalogowano";
  19. }
  20. ?>


db.php:
  1. <?php
  2.  
  3. class DB
  4. {
  5. private static $_instance = null;
  6. private $_pdo,
  7. //konstruktor klasy BD,
  8. private function __construct()
  9. {
  10. try
  11. {
  12. $this->_pdo = new PDO('mysql:host=localhost;dbname=informator', 'root', '');
  13. echo "Connected";
  14. }
  15. catch(PDOException $e)
  16. {
  17. die($e->getMessage());
  18. }
  19. }
  20.  
  21. //sprawdߠczy klasa DB juߠistnieje,
  22. public static function getInstance()
  23. {
  24. if(!isset(self::$_instance))
  25. {
  26. self::$_instance = new DB();
  27. }
  28. return self::$_instance;
  29. }
  30.  
  31. public function login($login, $password)
  32. {
  33. if(!isset($_SESSION['logged']))
  34. {
  35. if(isset($_POST['submit']))
  36. {
  37. //$login = trim($_POST['login']);
  38. //$password = trim($_POST['password']);
  39.  
  40. try
  41. {
  42. $pdo = self::getInstance();
  43. $stmt = $pdo->prepare('SELECT * FROM users WHERE login = :login');
  44. $stmt->bindValue(':login', $login, PDO::PARAM_STR);
  45. $stmt->execute();
  46. $row = $stmt->fetch(PDO::FETCH_OBJ);
  47. $pass = $row->password;
  48. $usr = $row->login;
  49. if(password_verify($password, $pass) && $login ===$usr)
  50. {
  51. echo "Witaj ".$login;
  52. $_SESSION['logged'] = true;
  53. $_SESSION['login'] = $login;
  54. }
  55. else
  56. {
  57. echo "Podano nieprawidłowe dane";
  58. }
  59. }
  60. catch(PDOException $e)
  61. {
  62. echo "Połączenie nie mogło zostac utworzone" .$e->getMessage();
  63. }
  64. }
  65. }
  66.  
  67. }
  68. }
  69.  
  70. ?>

Go to the top of the page
+Quote Post
JohnnyB
post
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

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


Cytat
Nie wiem dlaczego zaraz po załadowaniu index.php zmienna $_SESSION['logged']

Może masz ustawione session.auto_start =1 w php.ini, poza tym nie podoba mi się kod funkcji login, sesję powinieneś startować na początku programu a nie w instrukcji if, nigdzie nie ustawiasz logged na false, więc jak raz się zalogujesz poprawnie, to ciągle będzie pamiętać, poszukaj jak ustawić aby sesja była usuwana po zamknięciu przeglądarki.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 18:21