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, 13:05:15 ) *
Po co mam wymyślać koło na nowo, jak już wspomniał kolega wyżej, jest 100000000000 klas logowania OOP w sieci.

I wszystkie sa takie zajebiste...to moze byc podal biblioteke kogos ktora wedlug ciebie jest jakims guru wsrod innych.Po co sie w ogole udzielasz ostatnio tak patrze na posty @Damonsson i innych user-ow i oni naprawde maja sie za jakis majsterow to przynajmniej jak jestescie tacy dobrzy to podajcie link komus "gorszemu" jak juz musicie pisac glupie odpowiedzi jak nie to nawet nie zawracajcie sobie i innym dupy.

@!*! no niestety taka prawda widac ze w pracy nie robia niczego ciekawego ;]
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: 18.10.2025 - 02:10