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
MESSIAH :)
post
Post #2





Grupa: Zarejestrowani
Postów: 249
Pomógł: 0
Dołączył: 22.12.2011

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


Dokładnie też to zauważyłem. Jeszcze Comandeer próbuje pomagać sensownie a nospor i ten damonsson to już kpina z pomagania. Dlatego wolę o 100% stackoverflow.com tam wyjaśnią i pomogą bez pierdzielenia. Najlepszy jest text który tutaj powtarzają na okrągło: Nie wymyślaj koła na nowo (IMG:style_emoticons/default/smile.gif) . A dlaczego mam nie wymyślać? Bo może większość wymyślonych kół jest kwadratem! Jeśli nie należy wymyślać koła na nowo to powinniście jechać do mechanika aby wam zmienił koła w samochodzie na te z epoki BC czyli kamienne. prosty przykład: jeśli wezmę gotowe koło i mi się zepsuje to będę musiał pytać się wynalazcy jak je naprawić a gdy to ja osobiście zrobie sobie koło wtedy będę wiedział gdzie co i jak.
Go to the top of the page
+Quote Post
KsaR
post
Post #3





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Offtopując.

Cytat(MESSIAH :) @ 6.08.2015, 21:15:00 ) *
Dokładnie też to zauważyłem. Jeszcze Comandeer próbuje pomagać sensownie a nospor i ten damonsson to już kpina z pomagania.

Nie że coś, tylko TY NIE CZYTASZ Z UWAGĄ.
Widziałem kilka twoich tematów to się dziwie że ci perm-bana nie dali, bo to już ponad trolowanie chyba;

Piszą ci, a ty jesteś leniwy i wolisz mieć na tacy podane do stołu, nie dając żadnego wkładu bo myślisz że tak będzie najlepiej, a prawda taka że tak się nigdy nie poprawisz w programowaniu tylko stale będziesz na jednym poziomie.

Musisz więcej sprawdzać/weryfikować. Ktoś ci pomaga to to uszanuj i kieruj sie wskazowkami zamiast czekac na lepsza odpowiedz (nie wiadomo po jakim czasie), "na tacy".


2. Co do reszty, nie ogarniam tego waszego koła na nowo,
Ktoś chce cos zrobic to niech robi.
Gdyby kazdy tak samo myslal to juz by nic nowego nie było, bo po co?

Po co laczyc sie z baza kolejny raz? Przeciez to kolo na nowo..
Po co dawac kolejny if? Przeciez to kolo na nowo..
Itp.

Rozumiem ze kilka projektow sie wybilo znacznie, i wspiera je byc moze setki osob.
Ale to nie oznacza zeby ktos nie probowal czegos zrobic po swojemu..
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: 12.10.2025 - 20:09