Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa logowania usera
michalboss
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 31.07.2015

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


Witam

Napisałem taką klasę logowania użytkownika w systemie.
Nie jest jeszcze skończona, ale chciałem prosić o ewentualne wskazanie błędów w w/w kodzie, ponieważ dopiero zaczynam OOP w php.

  1. <?php
  2.  
  3. class Login
  4. {
  5.  
  6. private $_dbh;
  7. private $_config;
  8. private $_lang;
  9. private $_isLoggin = FALSE;
  10. private $_idSession;
  11. private $_email;
  12. private $_password;
  13.  
  14. public function __construct($dbh, $config, $lang)
  15. {
  16. $this -> _dbh = $dbh;
  17. $this -> _config = $config;
  18. $this -> _lang = $lang;
  19. }
  20.  
  21. /**
  22.   * Metoda sprawdza czy user jest zalogowany w systemie
  23.   *
  24.   * @access public
  25.   * @return bool
  26.   */
  27. public function checkLoggin()
  28. {
  29. return $this -> _isLoggin;
  30. }
  31.  
  32. /**
  33.   * Metoda sprawdza czy istnieją zmienne sesyjne - jeśli tak, to loguje usera w klasie
  34.   *
  35.   * @access public
  36.   * @return bool
  37.   */
  38. protected function isLoggin()
  39. {
  40. if($_SESSION['isLoggin'] == TRUE)
  41. {
  42. $this -> _isLoggin = $_SESSION['isLoggin'];
  43. $this -> _idSession = session_id();
  44. $this -> _email = $_SESSION['email'];
  45. return TRUE;
  46. }
  47. else
  48. {
  49. return FALSE;
  50. }
  51. }
  52.  
  53. /**
  54.   * Metoda logowania - sprawdzania czy użytkownik jest zalogowany i czy istnieją zmienne formularza logowania
  55.   * Jeśli tak, to sprawdza w bazie poprawność e-mail oraz hasła i dokonuje logowania w systemie
  56.   *
  57.   * @access public
  58.   * @return void
  59.   */
  60. public function userLogin()
  61. {
  62. $errorMsg = '';
  63. if(!($this -> _isLoggin) && isset($_POST['logEmail']) && isset($_POST['logPassword']))
  64. {
  65. $sql = $this -> _dbh -> prepare('SELECT A.IdUser, A.Email, A.Password, A.Salt, A.FirstName, A.LastName, A.ErrorLogin, A.ErrorLoginTime, A.Current '
  66. . 'FROM `users` A '
  67. . 'WHERE A.Email=:email LIMIT 1');
  68. $sql -> bindValue(':email', $_POST['logEmail'], PDO::PARAM_STR);
  69. $sql -> execute();
  70. if($sql -> rowCount() > 0)
  71. {
  72. if($row = $sql -> fetch())
  73. {
  74. if(self::encode($_POST['logPassword'], $row['Salt']) == $row['Password'])
  75. {
  76. $_SESSION['isLoggin'] = TRUE;
  77. $_SESSION['email'] = $row['Email'];
  78. $_SESSION['IdUser'] = $row['IdUser'];
  79. $this -> isLoggin();
  80. }
  81. else
  82. {
  83. $errorMsg = $this -> _lang['errorLogin'];
  84. }
  85. }
  86. }
  87. else
  88. {
  89. $errorMsg = $this -> _lang['errorLogin'];
  90. }
  91.  
  92. if(!empty($errorMsg))
  93. {
  94. throw new Exception($errorMsg);
  95. }
  96. }
  97. else if(!($this -> _isLoggin) && isset($_SESSION['isLoggin']) && $_SESSION['isLoggin'] == TRUE)
  98. {
  99. $this -> isLoggin();
  100. }
  101. }
  102.  
  103. /**
  104.   * Metoda wylogowuje uzytkownika i usuwa sesję
  105.   *
  106.   * @access public
  107.   * @return void
  108.   */
  109. public function userLogout()
  110. {
  111. unset($_SESSION);
  112. unset($this -> _isLoggin);
  113. unset($this -> _idSession);
  114. unset($this -> _email);
  115. header("Location: index.php?msg=logout");
  116. }
  117.  
  118. /**
  119.   * Metoda hashuje hasło używając podanej soli z kartoteki usera
  120.   *
  121.   * @access public
  122.   * @param string $Password
  123.   * @param string $Salt
  124.   * @return string
  125.   */
  126. public static function encode($Password, $Salt)
  127. {
  128. return hash('sha256', $Salt . hash('sha256', $Password . $Salt));
  129. }
  130.  
  131. /**
  132.   * Metoda tworzy sól podanego hasła
  133.   *
  134.   * @access public
  135.   * @param string $Password
  136.   * @return string
  137.   */
  138. public static function salt($Password)
  139. {
  140. return substr(hash('sha256', microtime() . substr($Password, 0, 3)), 0, 5);
  141. }
  142.  
  143. public static function timemicro()
  144. {
  145. list($z1, $se) = explode(" ", microtime());
  146. return ((float) $z1 + (float) $se);
  147. }
  148.  
  149. }
  150. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(Damonsson @ 4.08.2015, 17:38:58 ) *
Kolega @viking podał Ci 2 podejrzewam najczęściej wykorzystywane. Jeżeli nie umiesz chociaż jednej wymienić z pamięci to Twój problem, że żyjesz w czasach jakie reprezentuje Twoja klasa. A wygooglowanie tego zajmuje max 30 sekund. Ja nie jestem od nauki jak używać Google. Ja chętnie pomagam innym osobom, szczególnie początkującym. Nie pisałem co jest źle w tej klasie z tematu bo mi się zwyczajnie nie chcę, ale podałem słowa klucze do google, dzięki którym autor tematu w mig pojmie jakie zrobił błędy i jak powinna wyglądać taka klasa. A @CuteOne zrobił fajne review kodu i jak widzisz jest tego sporo i chwała mu za to, że miał chęć to przejrzeć szczegółowo i opisać.

Piszę posta, bo kolega @audiodesign10 odniósł się bezpośrednio do mnie, więc mu odpisałem. Gdyby ktokolwiek wpisał w google php oop login example i przewertował 10 stron google, poświęcił na to max 1h to nie zadawałby głupich pytań. Staram się w każdym moim poście dać pytającym wędkę, żeby sam mógł sobie złowić rybę.

Nie uważam się za żadnego majstra, dla Ciebie mogę nie znać podstaw HTML'a jeżeli ma Ci to poprawić poczucie własnej wartości, niech tak będzie. Jeżeli musisz się dowartościowywać przez forum i zastanawiać się, czy dany użytkownik ma ciekawą pracy, czy jednak nic ciekawego nie robi, to na jakim poziomie chcesz dyskutować? Załóż sobie temat w offtopicu i tam rozkminiaj czy ktoś robi w pracy coś ciekawego czy może jednak nie.

Mnie nie musisz podawac sam sobie znajde ale jak masz sie udzielac w tematach z glupimi odp to nie udzielaj sie wcale kropka potem reszta twoich wypocin mnie nie interesuje.

Cytat
Niewymyślanie koła na nowo to teraz oznaka lenistwa i bycia nudnym...

W jakich czasach przyszło nam żyć... biggrin.gif

No tak stalo sie nudne te forum przez takich jak wy (IMG:style_emoticons/default/wink.gif)

Ten post edytował marcio 5.08.2015, 10:48:40
Go to the top of the page
+Quote Post

Posty w temacie
- michalboss   Klasa logowania usera   31.07.2015, 20:26:06
- - Damonsson   Żeby było szybciej napiszę co jest dobrze: nic. Ni...   31.07.2015, 20:48:38
|- - audiodesign10   Cytat(Damonsson @ 31.07.2015, 21:48:3...   3.08.2015, 21:00:29
|- - Damonsson   Cytat(audiodesign10 @ 3.08.2015, 22:00...   4.08.2015, 12:05:15
- - CuteOne   Szybkie code review: 1. [PHP] pobierz, plaintext ...   31.07.2015, 21:49:02
- - michalboss   Dzięki za odp - poprawię ten kod i dam jeszcze raz...   1.08.2015, 09:20:15
- - Skie   2. Tutaj koledze chodziło o to, że nazwy metod jak...   1.08.2015, 13:55:48
|- - Damonsson   Cytat(Skie @ 1.08.2015, 14:55:48 ) Ta...   1.08.2015, 14:32:38
- - michalboss   To chyba najlepiej podwójne hashowanie sola z bazy...   1.08.2015, 18:51:37
- - Pyton_000   A nie lepiej użyć jednego kodowania ale mocnego? D...   1.08.2015, 18:58:44
- - Skie   CytatDlatego jestem zwolennikiem trzymania soli za...   1.08.2015, 20:29:07
|- - borabora   Cytat(Skie @ 1.08.2015, 21:29:07 ) Be...   1.08.2015, 20:40:56
- - michalboss   Trochę zmieniłem kod klasy - może to jest trochę b...   1.08.2015, 21:11:23
- - CuteOne   Już trochę lepiej to wygląda ale gdybyś pracował j...   1.08.2015, 22:53:13
- - michalboss   Z tego co piszesz to rozumiem że lepiej zrobić zam...   3.08.2015, 11:00:21
- - marcio   Jesli chcesz spojrz na moja klase do logowania nie...   3.08.2015, 12:15:59
- - Pyton_000   I jest równie fatalnie napisana co autora wątku.   3.08.2015, 12:50:24
- - marcio   Cytat(Pyton_000 @ 3.08.2015, 13:50:24...   3.08.2015, 18:06:58
- - Pyton_000   A kto powiedział że takową mam. Ja nie wymyślam ko...   3.08.2015, 18:55:57
- - marcio   Cytat(Pyton_000 @ 3.08.2015, 19:55:57...   4.08.2015, 09:06:32
|- - !*!   Cytat(marcio @ 4.08.2015, 10:06:32 ) ...   4.08.2015, 11:24:38
- - marcio   Cytat(Damonsson @ 4.08.2015, 13:05:15...   4.08.2015, 13:14:54
|- - Damonsson   Cytat(marcio @ 4.08.2015, 14:14:54 ) ...   4.08.2015, 16:38:58
- - viking   Najlepiej podpatrzeć jak to robią duzi: https://gi...   4.08.2015, 14:15:56
- - pyro   Niewymyślanie koła na nowo to teraz oznaka lenistw...   4.08.2015, 17:40:05
- - marcio   Cytat(Damonsson @ 4.08.2015, 17:38:58...   5.08.2015, 10:47:20
- - Pyton_000   Zawsze możesz iść na inne gdzie będziesz się lepie...   5.08.2015, 11:12:43
- - marcio   Cytat(pyro @ 4.08.2015, 18:40:05 ) Ni...   5.08.2015, 17:04:04
- - MESSIAH :)   Dokładnie też to zauważyłem. Jeszcze Comandeer pró...   6.08.2015, 20:15:00
|- - Ksar   Offtopując. Cytat(MESSIAH :) @ 6.08....   6.08.2015, 22:26:31
|- - Damonsson   Skoro moderatorzy nie reagują na raporty, znaczy, ...   6.08.2015, 22:37:55
|- - Ksar   Cytat(Damonsson @ 6.08.2015, 23:37:55...   6.08.2015, 22:42:56
- - com   MESSIAH no bez jaj, pomaganie !== zrobienie z...   6.08.2015, 21:30:38
- - com   Róbcie co się wam podoba tylko jak ktoś przychodzi...   6.08.2015, 22:36:33
- - com   bo robienie czegoś co już jest i dawanie tego do o...   6.08.2015, 22:51:33
- - marcio   @Damonsson: Cytatktóre napisalibyśmy w 95% tak sam...   7.08.2015, 16:07:29
|- - !*!   Cytat(marcio @ 7.08.2015, 17:07:29 ) ...   7.08.2015, 17:25:19
|- - MESSIAH :)   Cytat(!*! @ 7.08.2015, 18:25...   7.08.2015, 19:43:30
- - memory   przecież dostałeś odpowiedź o co ci teraz chodzi?   7.08.2015, 20:04:47
- - CuteOne   @MESSIAH jeżeli tamten temat wyglądał jak ten Tem...   7.08.2015, 20:10:45
- - Daiquiri   Ludziska skończcie proszę te wycieczki osobiste - ...   8.08.2015, 08:42:57
- - marcio   CytatPrzecież już Ci wyjaśnił że nie, ponieważ nie...   8.08.2015, 12:05:01
|- - !*!   Cytat(marcio @ 8.08.2015, 13:05:01 ) ...   8.08.2015, 12:28:06
- - Daiquiri   !*!, Marcio - nie zaśmiecajcie już tematu.   8.08.2015, 12:56:36


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: 16.10.2025 - 14:42