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
3 Stron V   1 2 3 >  
Start new topic
Odpowiedzi (1 - 43)
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Żeby było szybciej napiszę co jest dobrze: nic. Nie jestem złośliwy w tym wypadku, uwierz. Może komuś będzie się chciało tłumaczyć, więc nie kasuj wątku.

Wygoogluj sobie: php oop example, php oop login example itp.
Go to the top of the page
+Quote Post
CuteOne
post
Post #3





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Szybkie code review:
1.
  1. $this -> _dbh

znacznie czytelniejsza wersja
  1. $this->dbh

2. Nazwy metod z 4 liter. np "checkLoggin()"
3. $_SESSION['isLoggin'] rzuci notice jeżeli klucz nie istnieje
4. Odpowiedz mi na pytanie, po cholerę w metodzie, która ma przypisać coś do czegoś robisz return bool? Zamiast zwyczajnie przypisać i opuścić metodę
  1. /**
  2.   * Metoda sprawdza czy istnieją zmienne sesyjne - jeśli tak, to loguje usera w klasie
  3.   *
  4.   * @access public
  5.   * @return bool
  6.   */
  7. protected function isLoggin()
  8. {
  9. if($_SESSION['isLoggin'] == TRUE)
  10. {
  11. $this -> _isLoggin = $_SESSION['isLoggin'];
  12. $this -> _idSession = session_id();
  13. $this -> _email = $_SESSION['email'];
  14. return TRUE;
  15. }
  16. else
  17. {
  18. return FALSE;
  19. }
  20. }

5. Zbędny else
  1. if (1 == 1) {
  2. return true;
  3. }
  4. return false;

6. Przeczytaj co to SÓL, bo ta metoda nie ma z nią nic wspólnego
7. Po co ci statyczne metody?

Reszty już nie chce mi się sprawdzać - wszystko jest nie tak jak być powinno (IMG:style_emoticons/default/sad.gif)

@edit a o hashowaniu hashó masz pogadankę w podczepionych

Ten post edytował CuteOne 31.07.2015, 21:53:09
Go to the top of the page
+Quote Post
michalboss
post
Post #4





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

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


Dzięki za odp - poprawię ten kod i dam jeszcze raz.
Nie rozumiem tylko punktu 2 oraz 6 - możesz rozwinąć?
Go to the top of the page
+Quote Post
Skie
post
Post #5





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


2. Tutaj koledze chodziło o to, że nazwy metod jakie dobierasz odbiegają daleko od tego co dana metoda robi - np. isLoggin (lepsza nazwa to byłoby bodajże isLogged) sugeruje, że akcja sprawdza czy użytkownik jest zalogowany - tylko to. Twoja wersja z kolei jeszcze pod spodem robi własne logowanie, o czym nazwa metody nie mówi nic a nic.

6. Poczytaj o soli tutaj Temat: podwojne hashowanie hasel . Generalnie chodzi o to, że sól to pewny tajny string, którego używasz do konkatenacji z wpisanym przez użytkownika hasłem, by bronić się przed tęczowymi tablicami. Ta sól powinna być zahardkodowana gdzieś w kodzie Twojej aplikacji lub pobierana z jakichś plików źródłowych - nie powinna być trzymana w bazie danych koło hasła, bo wtedy skuteczność używania tej metody spada praktycznei do zera.
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Cytat(Skie @ 1.08.2015, 14:55:48 ) *
Ta sól powinna być zahardkodowana gdzieś w kodzie Twojej aplikacji lub pobierana z jakichś plików źródłowych - nie powinna być trzymana w bazie danych koło hasła, bo wtedy skuteczność używania tej metody spada praktycznei do zera.

Jeżeli będzie zahardkodowana w kodzie, to będzie taka sama dla każdego usera i jej użyteczność bardzo mocno spadnie, w przypadku jej poznania. Znowu jeżeli będzie w bazie danych to będzie widoczna dla każdego hasła. Dlatego jestem zwolennikiem trzymania soli zarówno zahardkodowanej w kodzie jak i w bazie danych dla każdego hasła innej. Gdybym musiał wybierać nad tylko jednym sposobem trzymania soli, wybieram zdecydowanie opcję w bazie danych.
Go to the top of the page
+Quote Post
michalboss
post
Post #7





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

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


To chyba najlepiej podwójne hashowanie sola z bazy + solą ogólną dla systemu?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A nie lepiej użyć jednego kodowania ale mocnego? Dajmy na to BlowFish, sha512 lub whirlpool ? Złamanie takiego hasła jest *nie możliwe (* nie możliwe w rozsądnym czasie)
Go to the top of the page
+Quote Post
Skie
post
Post #9





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Cytat
Dlatego jestem zwolennikiem trzymania soli zarówno zahardkodowanej w kodzie jak i w bazie danych dla każdego hasła innej.


Bez sensu trzymać sól w bazie danych, skoro używa się jej właśnie po to, by włamywacz nie był w stanie odszyfrować hasz haseł za pomocą tęczowych tablic po zdobyciu dostępu / zrzutu bazy danych aplikacji. Jest super mało prawdopodobne, że ktoś taki zdobędzie same hasze z bazy , ale soli już nie, dlatego tak jak pisałem - albo hardkodujemy sól w kodzie aplikacji albo pobieramy z zewnętrznego źródła. Polecam jednak hardkodować, bo jak w jakiś sposób stracisz sole wygenerowane dla pojedynczych użytkowników to będzie przeje.... (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
borabora
post
Post #10





Grupa: Zarejestrowani
Postów: 116
Pomógł: 33
Dołączył: 8.09.2014

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


Cytat(Skie @ 1.08.2015, 21:29:07 ) *
Bez sensu trzymać sól w bazie danych, skoro używa się jej właśnie po to, by włamywacz nie był w stanie odszyfrować hasz haseł za pomocą tęczowych tablic po zdobyciu dostępu / zrzutu bazy danych aplikacji.


nikt nie powiedział, że kod musi wyglądać tak:
  1. haszowanie($sol.$haslo)


sól z bazy możesz zmienić w skrypcie w sposób, w jaki Ci się podoba

Ten post edytował borabora 1.08.2015, 20:42:51
Go to the top of the page
+Quote Post
michalboss
post
Post #11





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

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


Trochę zmieniłem kod klasy - może to jest trochę bardziej prawidłowe od poprzedniego?
Jeśli chodzi o metody statyczne to zdefiniowałem je aby także użyć w innych klasach jak user -> rejestracja.

  1. <?php
  2.  
  3. class Login
  4. {
  5.  
  6. private $dbh;
  7. private $config;
  8. private $lang;
  9. private $isLogged = FALSE;
  10. private $idSession;
  11. private $email;
  12. private $idUser;
  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 checkLogged()
  28. {
  29. return $this->isLogged;
  30. }
  31.  
  32. /**
  33.   * Metoda sprawdza czy uzytkownik jest zalogowany (w klasie) - jeśli tak, to zapisuje dane z klasy do sesji
  34.   *
  35.   * @access public
  36.   * @return bool
  37.   */
  38. protected function setSessionData()
  39. {
  40. if($this->isLogged == TRUE)
  41. {
  42. $_SESSION['isLogged'] = $this->isLogged;
  43. $_SESSION['idUser'] = $this->idUser;
  44. $_SESSION['email'] = $this->email;
  45. }
  46. }
  47.  
  48. /**
  49.   * Metoda sprawdza czy uzytkownik jest zalogowany (sesję) - jeśli tak, to zapisuje dane z sesji do klasy
  50.   *
  51.   * @access public
  52.   * @return bool
  53.   */
  54. protected function getSessionData()
  55. {
  56. if(isset($_SESSION['isLogged']) && $_SESSION['isLogged'] == TRUE)
  57. {
  58. $this->isLogged = $_SESSION['isLogged'];
  59. $this->idUser = $_SESSION['idUser'];
  60. $this->email = $_SESSION['email'];
  61. $this->idSession = session_id();
  62. }
  63. }
  64.  
  65. /**
  66.   * Metoda logowania - sprawdza czy użytkownik nie jest już zalogowany i czy istnieją zmienne formularza logowania
  67.   * Jeśli tak, to sprawdza w bazie poprawność e-mail oraz hasła i dokonuje logowania w systemie
  68.   * Sprawdzana jest także ilość błędnych logowań - max 5 oraz czas od pierwszego błędnego logowania.
  69.   *
  70.   * @access public
  71.   * @return void
  72.   */
  73. public function userLogin()
  74. {
  75. $errorMsg = '';
  76. if(!($this->isLogged) && isset($_POST['logEmail']) && isset($_POST['logPassword']))
  77. {
  78. $sql = $this->dbh->prepare('SELECT A.IdUser, A.Email, A.Password, A.Salt, A.FirstName, A.LastName, A.ErrorLogin, A.ErrorLoginTime, A.Current '
  79. . 'FROM `users` A '
  80. . 'WHERE A.Email=:email LIMIT 1');
  81. $sql->bindValue(':email', $_POST['logEmail'], PDO::PARAM_STR);
  82. $sql->execute();
  83. if($sql->rowCount() > 0)
  84. {
  85. if($row = $sql->fetch())
  86. {
  87. $timeActual = strtotime(date("Y-m-d H:i:s"));
  88. $timeLogin = strtotime($row['ErrorLoginTime']);
  89. $timeCheck = $timeActual - $timeLogin;
  90. $timeCheckMin = round(60 - ($timeCheck / 60), 0);
  91.  
  92. if(self::decode($_POST['logPassword'], $row['Password']) == TRUE)
  93. {
  94. if($row['Current'] == 0)
  95. {
  96. $errorMsg = $this->lang['errorLoginCurrentError'];
  97. }
  98. else if($row['ErrorLogin'] >= 5 && ($timeCheck <= 3600))
  99. {
  100. $errorMsg = $this->lang['errorLoginTime'] . ' ' . $timeCheckMin . ' min.';
  101. }
  102. else
  103. {
  104. $this->isLogged = TRUE;
  105. $this->email = $row['Email'];
  106. $this->idUser = $row['IdUser'];
  107. $this->idSession = session_id();
  108. $this->setSessionData();
  109. if($row['ErrorLogin'] > 0 || $row['ErrorLoginTime'] != NULL)
  110. {
  111. $this->resetErrorLogin();
  112. }
  113. }
  114. }
  115. else
  116. {
  117. if($row['ErrorLogin'] >= 5 && ($timeCheck <= 3600))
  118. {
  119. $errorMsg = $this->lang['errorLoginTime'] . ' ' . $timeCheckMin . ' min.';
  120. }
  121. else
  122. {
  123. $this->updateErrorLogin($_POST['logEmail']);
  124. $errorMsg = $this->lang['errorLogin'];
  125. }
  126. }
  127. }
  128. }
  129. else
  130. {
  131. $this->updateErrorLogin($_POST['logEmail']);
  132. $errorMsg = $this->lang['errorLogin'];
  133. }
  134.  
  135. if(!empty($errorMsg))
  136. {
  137. throw new Exception($errorMsg);
  138. }
  139. }
  140. else if(!($this->isLogged) && isset($_SESSION['isLogged']) && $_SESSION['isLogged'] == TRUE)
  141. {
  142. $this->getSessionData();
  143. }
  144. }
  145.  
  146. /**
  147.   * Metoda resetuje ilośc błędów logowania oraz czas,
  148.   * dla użytkownika, w przypadku powodzenia logowania
  149.   *
  150.   * @access public
  151.   * @return void
  152.   */
  153. protected function resetErrorLogin()
  154. {
  155. $sql2 = $this->dbh->prepare('UPDATE `users` SET ErrorLogin = 0, ErrorLoginTime = NULL '
  156. . 'WHERE Email=:email');
  157. $sql2->bindValue(':email', $this->email, PDO::PARAM_STR);
  158. $sql2->execute();
  159. }
  160.  
  161. /**
  162.   * Metoda zwiększa ilośc błędnych logowań oraz zapisuje czas pierwszego błednego logowania
  163.   *
  164.   * @access public
  165.   * @return void
  166.   */
  167. protected function updateErrorLogin($logEmail)
  168. {
  169. $sql2 = $this->dbh->prepare('UPDATE `users` SET '
  170. . 'ErrorLogin = ErrorLogin+1, '
  171. . 'ErrorLoginTime = if(ErrorLoginTime IS NULL, \'' . date("Y-m-d H:i:s") . '\', ErrorLoginTime) '
  172. . 'WHERE Email=:email');
  173. $sql2->bindValue(':email', $logEmail, PDO::PARAM_STR);
  174. $sql2->execute();
  175. }
  176.  
  177. /**
  178.   * Metoda wylogowuje uzytkownika, niszczy sesję i usuwa dane
  179.   *
  180.   * @access public
  181.   * @return void
  182.   */
  183. public function userLogout()
  184. {
  185. unset($_SESSION);
  186. unset($this->isLogged);
  187. unset($this->idSession);
  188. unset($this->email);
  189. unset($this->idUser);
  190. header("Location: index.php?msg=logout");
  191. }
  192.  
  193. /**
  194.   * Metoda hashuje hasło używając podanej soli z kartoteki usera
  195.   *
  196.   * @access public
  197.   * @param string $Password
  198.   * @param string $Salt
  199.   * @return string
  200.   */
  201. public static function encode($password, $salt, $rounds = 10000)
  202. {
  203. // pass in the password, the number of rounds, and the salt
  204. // $5$ specifies SHA256-CRYPT, use $6$ if you really want SHA512
  205. return crypt($password, sprintf('$6$rounds=%d$%s$', $rounds, $salt));
  206. }
  207.  
  208. /**
  209.   * Metoda rozszyfrowuje podane hasło
  210.   *
  211.   * @access public
  212.   * @param string $Password
  213.   * @param string $Salt
  214.   * @return string
  215.   */
  216. public static function decode($password, $dbPassword)
  217. {
  218. // extract the hashing method, number of rounds, and salt from the stored hash
  219. // and hash the password string accordingly
  220. $parts = explode('$', $dbPassword);
  221. $testPassword = crypt($password, sprintf('$%s$%s$%s$', $parts[1], $parts[2], $parts[3]));
  222. return ($dbPassword === $testPassword) ? TURE : FALSE;
  223. }
  224.  
  225. /**
  226.   * Metoda tworzenia 16-znakowej soli
  227.   *
  228.   * @access public
  229.   * @return string
  230.   */
  231. public static function salt()
  232. {
  233. //return substr(hash('sha256', microtime() . substr($Password, 0, 3)), 0, 5);
  234. return substr(str_replace('+','.',base64_encode(md5(mt_rand(), true))),0,16);
  235. }
  236. }
  237. ?>
Go to the top of the page
+Quote Post
CuteOne
post
Post #12





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Już trochę lepiej to wygląda ale gdybyś pracował jako programista taki kod nigdy nie wszedłby na produkcję (IMG:style_emoticons/default/wink.gif) Dobra rada - spróbuj swoich sił z jakimś frameworkiem np. Zend 1/2, Symfony 2, CakePHP. Zobaczysz jak powinno się pisać aplikacje, czym tak naprawdę jest OPP (to nie zbiór metod w klasie X) i jak z niego korzystać

Szybkie CR
1. Nie rób jednej klasy, która robi masę różnych rzeczy - widziałeś kiedyś bolida F1, który kosi trawnik, ora pole i rozwozi mleko? Podziel tą klasę na mniejsze odpowiadające różnym zadaniom
- coś odpowiedzialnego za obsługę sesji
- coś co filtruje/waliduje dane
- klasa autoryzacji (nie myl z "logowaniem" - klasa logowania jedynie korzysta z klas autoryzacji)
- klasa obsługująca akcje autoryzacyjne - logowanie, wylogowanie czy rejestracja
- klasa trzymająca dane użytkownika - login, id itp.
- klasa obsługująca hashowanie
itp.
2. Za dużo if else. Poważnie... przemyśl czy nie da się tego uprościć/rozbić na kilka metod
3. " header("Location: index.php?msg=logout");" to powinno wylecieć, metoda logout ma TYLKO jedno zadanie - usuń sesję użytkownika - tyle, żadnych redirectów czy echów. To samo tyczy się innych metod
4. Do konstruktora, możesz przekazać tablicę jako handler bazy danych (brak "wymuszenia" typu danych)
5. Pomijam ocenę tych czasochłonnych operacji przy generowaniu soli (kwestia gustu) jednak istnieją prostsze metody jej generowania (IMG:style_emoticons/default/wink.gif)
6. Cóż to za potworek.. ?
  1. else if(!($this->isLogged) && isset($_SESSION['isLogged']) && $_SESSION['isLogged'] == TRUE)

7. I kolejny
  1. (...)$errorMsg = $this->lang['errorLoginTime'] . ' ' . $timeCheckMin . ' min.';(...)
  2. (...)$errorMsg = $this->lang['errorLogin'];(...)
  3. //itp.
  4. // a później..
  5. if(!empty($errorMsg))
  6. {
  7. throw new Exception($errorMsg);
  8. }


@edit w metodzie 'userLogin()' robisz
  1. $this->isLogged = TRUE;
  2. $this->email = $row['Email'];
  3. $this->idUser = $row['IdUser'];
  4. $this->idSession = session_id();
  5. $this->setSessionData();

po czym w setSessionData() robisz ponownie to samo...

Ten post edytował CuteOne 1.08.2015, 22:58:24
Go to the top of the page
+Quote Post
michalboss
post
Post #13





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

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


Z tego co piszesz to rozumiem że lepiej zrobić zamiast:

  1. if($row['Current'] == 0)
  2. {
  3. $errorMsg = $this->lang['errorLoginCurrentError'];
  4. }
  5. else if($row['ErrorLogin'] >= 5 && ($timeCheck <= 3600))
  6. {
  7. $errorMsg = $this->lang['errorLoginTime'] . ' ' . $timeCheckMin . ' min.';
  8. }


to:

  1. if (!$this->checkCurrent())
  2. {
  3. throw new Exception($this->lang['errorLoginCurrentError']);
  4. }
  5.  
  6. if (!$this->checkErrorLoggin())
  7. {
  8. throw new Exception($this->lang['errorLoginTime'] . ' ' . $timeCheckMin . ' min');
  9. }


Czy taki zapis będzie lepszy od else if ?
Wtedy też likwiduje to ten dziwny zapis:
  1. if(!empty($errorMsg))
  2. {
  3. throw new Exception($errorMsg);
  4. }




Ten pierwszy potworek:
  1. else if(!($this->isLogged) && isset($_SESSION['isLogged']) && $_SESSION['isLogged'] == TRUE)

sprawdza czy user jest zalogowany (w klasie) i jeśli nie jest, a istnieją dane sesyjne to ma przypisać ich wartości do pól klasy.
Czy po prostu to powinien zrobić konstruktor - np sprawdzić przy tworzeniu obiektu czy są zmienne sesyjne i je przypisać?

Ten post edytował michalboss 3.08.2015, 11:22:19
Go to the top of the page
+Quote Post
marcio
post
Post #14





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

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


Jesli chcesz spojrz na moja klase do logowania nie jest to na pewno jakis super kod ale moze ci pomoc, tak jak widzisz klasa uzywa wiele innych bibliotek i jest podzielona na wiecej "czesci"
https://github.com/marcio199226/Volta-frame...ollers/auth.php
Go to the top of the page
+Quote Post
Pyton_000
post
Post #15





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


I jest równie fatalnie napisana co autora wątku.
Go to the top of the page
+Quote Post
marcio
post
Post #16





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

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


Cytat(Pyton_000 @ 3.08.2015, 13:50:24 ) *
I jest równie fatalnie napisana co autora wątku.

No skoro tak twierdzisz to pokaz twoja (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #17





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A kto powiedział że takową mam. Ja nie wymyślam koła na nowo (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
audiodesign10
post
Post #18





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.08.2015

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


Cytat(Damonsson @ 31.07.2015, 21:48:38 ) *
Żeby było szybciej napiszę co jest dobrze: nic. Nie jestem złośliwy w tym wypadku, uwierz. Może komuś będzie się chciało tłumaczyć, więc nie kasuj wątku.

Wygoogluj sobie: php oop example, php oop login example itp.



Witam,
więc prosiłbym abyś pokazał dobry przykład jak to się dokładnie robi, aby początkujący programiści nie musieli na przyszłość błądzić.

Pozdrawiam (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
marcio
post
Post #19





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

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


Cytat(Pyton_000 @ 3.08.2015, 19:55:57 ) *
A kto powiedział że takową mam. Ja nie wymyślam koła na nowo (IMG:style_emoticons/default/wink.gif)

Ja tez nie, uzywam rozne fw ale to mi nie przeszkadza w napisaniu czegos mojego w wolnym czasie skoro jestes taki dobry tylko w uzywaniu np symfony2 to po co sie odzywasz widze ze ostatnio na tym forum cos sie ludzia w glowkach popitolilo zejdzie na ziemie ludzie.
Go to the top of the page
+Quote Post
!*!
post
Post #20





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(marcio @ 4.08.2015, 10:06:32 ) *
... widze ze ostatnio na tym forum cos sie ludzia w glowkach popitolilo zejdzie na ziemie ludzie ...


Niektórzy tak lubią, z lenistwem i stagnacją nie wygrasz. A co do dobrej klasy logowania, to praktycznie każdy FW ma takową w dokumentacji.
Go to the top of the page
+Quote Post
Damonsson
post
Post #21





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Cytat(audiodesign10 @ 3.08.2015, 22:00:29 ) *
Witam,
więc prosiłbym abyś pokazał dobry przykład jak to się dokładnie robi, aby początkujący programiści nie musieli na przyszłość błądzić.

Pozdrawiam (IMG:style_emoticons/default/wink.gif)

Po co mam wymyślać koło na nowo, jak już wspomniał kolega wyżej, jest 100000000000 klas logowania OOP w sieci.
Go to the top of the page
+Quote Post
marcio
post
Post #22





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
viking
post
Post #23





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Najlepiej podpatrzeć jak to robią duzi:
https://github.com/FriendsOfSymfony/FOSUserBundle
https://github.com/ZF-Commons/ZfcUser
Go to the top of the page
+Quote Post
Damonsson
post
Post #24





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Cytat(marcio @ 4.08.2015, 14:14:54 ) *
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 ;]

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.
Go to the top of the page
+Quote Post
pyro
post
Post #25





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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

W jakich czasach przyszło nam żyć... (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
marcio
post
Post #26





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
Pyton_000
post
Post #27





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Zawsze możesz iść na inne gdzie będziesz się lepiej czuł. Głupotą jest nieumiejętność przyjmowania krytyki. Oburzyłeś się wielce że ktoś Ci powiedział że kod który zaprezentowałeś jest miernej jakości, a Ty zamiast albo podyskutować dlaczego, co gdzie i jak to zaczynasz burczeć na cały świat że jest zły, że ludzie są beznadziejni.

Troszkę więcej samokrytycyzmu.
Go to the top of the page
+Quote Post
marcio
post
Post #28





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

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


Cytat(pyro @ 4.08.2015, 18:40:05 ) *
Niewymyślanie koła na nowo to teraz oznaka lenistwa i bycia nudnym...

W jakich czasach przyszło nam żyć... (IMG:style_emoticons/default/biggrin.gif)



Cytat(Pyton_000 @ 5.08.2015, 12:12:43 ) *
Zawsze możesz iść na inne gdzie będziesz się lepiej czuł. Głupotą jest nieumiejętność przyjmowania krytyki. Oburzyłeś się wielce że ktoś Ci powiedział że kod który zaprezentowałeś jest miernej jakości, a Ty zamiast albo podyskutować dlaczego, co gdzie i jak to zaczynasz burczeć na cały świat że jest zły, że ludzie są beznadziejni.

Troszkę więcej samokrytycyzmu.

Stary mam dobra samokrytyke i wiem ze kod nie jest wspanialy i wspomnialem o tym gdy podalem link do niego.
Ale skoro osoba ktora mi odpowiada ze jest zly nie ma do zaproponowania nic swojego i mowi mi ze kod ktory jest utrzymywany przez 10 developer-ow przez lata jest dobry to potrafi kazdy jak juz maja krytykowac to niech to robia z "klasa" jak nie to taka krytyka jest o dupe rozczas.

Mi nie chodzi o moj kod bo wiem jakie ma braki i co jest w nim dobre i na pewno zly nie jest chcialbym zobaczyc jak Damonsson to lepiej napisze skoro jest taki madry, na symfony2 kazdy klepac potrafi lepiej lub gorzej, pozdro i troche wiecej pokory wam potrzeba ;]

No i jak widac na tym forum juz prawie nie siedze bo jak powiedzialem zrobilo sie tu nudno i za duzo specow tu jest.
Ale czasami jak widze niektore odp to krew zalewa

Ten post edytował marcio 5.08.2015, 17:05:37
Go to the top of the page
+Quote Post
MESSIAH :)
post
Post #29





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
com
post
Post #30





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


MESSIAH (IMG:style_emoticons/default/smile.gif) no bez jaj, pomaganie !== zrobienie za kogoś gotowca. I nospor, czy Damonsson to rozumieją, a Comandeer jest tu nowy to jemu się jeszcze chcę myśleć za was. Korzystamy z tego samego googla co wy, to jak to jest że my potrafimy coś zaleźć i nie lecimy z trywialnymi problemami na forum a wy nie. Trzeba się samemu zainteresować, poszukać rozwiązania, pogłowić albo zmienić zawód.
Go to the top of the page
+Quote Post
KsaR
post
Post #31





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
com
post
Post #32





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Róbcie co się wam podoba tylko jak ktoś przychodzi i prosi o ocenę, a nie spojrzy nawet na rozwiązanie które działa i zostało sprawdzone, przetestowane przez całe community to o czym tu rozmawiać.
Go to the top of the page
+Quote Post
Damonsson
post
Post #33





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Skoro moderatorzy nie reagują na raporty, znaczy, że można ciągnąć offtopic, co niniejszym czynię.

Cytat(Ksar @ 6.08.2015, 23:26:31 ) *
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..

Chyba nie przeczytałeś z uwagą zagadnienia koła na nowo. Użytkownicy wymuszają na nas, vide:

Cytat(audiodesign10 @ 3.08.2015, 22:00:29 ) *
więc prosiłbym abyś pokazał dobry przykład jak to się dokładnie robi, aby początkujący programiści nie musieli na przyszłość błądzić.

Cytat(marcio @ 5.08.2015, 18:04:04 ) *
chcialbym zobaczyc jak Damonsson to lepiej napisze skoro jest taki madry

, żebyśmy my napisali im klasę logowania, a kiedy my dajemy bezpośrednie linki do już napisanych klas lub zapytania po jakich google wyświetli te klasy, które napisalibyśmy w 95% tak samo, jesteśmy wyzywani od nieudaczników i ludzi leniwych. O to się tutaj rozchodzi tylko i wyłącznie w wymyślaniu koła na nowo, nie ma to nic wspólnego z pisaniem własnych klas logowania przez tego kto chce to robić.

Ten post edytował Damonsson 6.08.2015, 22:40:10
Go to the top of the page
+Quote Post
KsaR
post
Post #34





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

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


Cytat(Damonsson @ 6.08.2015, 23:37:55 ) *
Skoro moderatorzy nie reagują na raporty, znaczy, że można ciągnąć offtopic, co niniejszym czynię.


Chyba nie przeczytałeś z uwagą zagadnienia koła na nowo. Użytkownicy wymuszają na nas, vide:



, żebyśmy my napisali im klasę logowania, a kiedy my dajemy bezpośrednie linki do już napisanych klas lub zapytania po jakich google wyświetli te klasy, które napisalibyśmy w 95% tak samo, jesteśmy wyzywani od nieudaczników i ludzi leniwych. O to się tutaj rozchodzi tylko i wyłącznie w wymyślaniu koła na nowo.

No nie doczytałem bo dopiero do domu wróciłem, tyle że już kiedyś czytałem inne tematy na forum.
Nie jestem wstanie wskazać jaki temat/dział ale napewno jeszcze w tym roku, ktoś kogoś o dosłownie jakiś tyci projekt(może z godzina roboty jak nie mniej) pojechał że to "kolo na nowo". I tak kilka postów dalej to samo. Wraz z coraz liczniejszym gronem ktore potwierdzalo zdanie tej osoby..
Go to the top of the page
+Quote Post
com
post
Post #35





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


bo robienie czegoś co już jest i dawanie tego do oceny nie robiąc research nie ma najmniejszego sensu, bo to robi się chyba tylko po to żeby pochwalić się jak mało się jeszcze wie. Uwierz, że nie jest łatwo wymyślić czegoś co już jest i zrobić to lepiej niż jest.

Coś takiego dla siebie to sobie można dłubać ale też warto zweryfikować czy się czasem nie odbiegło za bardzo od zamierzonego celu, no ale prosić nas o ocenę czegoś co my wyrzucimy od razu do kosza?...

Ten post edytował com 6.08.2015, 22:49:43
Go to the top of the page
+Quote Post
marcio
post
Post #36





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

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


@Damonsson:
Cytat
które napisalibyśmy w 95% tak samo,

No wlasnie o to chodzi chcialbym zobaczyc czy napisalbys to tak samo jak dev-y od symfony2 jakos w to nieche mi sie wierzyc (IMG:style_emoticons/default/wink.gif) no sry
Go to the top of the page
+Quote Post
!*!
post
Post #37





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(marcio @ 7.08.2015, 17:07:29 ) *
@Damonsson:

No wlasnie o to chodzi chcialbym zobaczyc czy napisalbys to tak samo jak dev-y od symfony2 jakos w to nieche mi sie wierzyc (IMG:style_emoticons/default/wink.gif) no sry


Przecież już Ci wyjaśnił że nie, ponieważ nie wymyślałby koła na nowo, tylko skopiował z S2 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
MESSIAH :)
post
Post #38





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

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


Cytat(!*! @ 7.08.2015, 18:25:19 ) *
Przecież już Ci wyjaśnił że nie, ponieważ nie wymyślałby koła na nowo, tylko skopiował z S2 ;)

HAHAHAHAHAHA Śmiechłem (IMG:style_emoticons/default/smile.gif)
Faktycznie nie dostanę tutaj gotowca bo myślałem że są tutaj "fachowcy" a na pytanie z kodowania dostaję odpowiedź z przedziału - psychologia gdzie najpierw muszę rozkodować odpowiedź "fachowca" na język polski i następnie szukać rozwiązań w google. Więc po około 3 miesiącach powinienem napisać klase Login przy pomocy "fachowców" (IMG:style_emoticons/default/smile.gif)

Prosty przykład:
ZADAŁEM PYTANIE TUTAJ NA php.pl
Cytat
Dlaczego nie mogę używać polskich znaków w nazwach parametrów bindowania?

"Fachowcy" obruszyli się i zaczęli mnie ganiać że tak nie wolno że kodowanie źle wyglada itp. A na pytanie dlaczego? Nie wiedzieli.
ZADAŁEM TO SAMO PYTANIE NA stockoverflow.com
http://stackoverflow.com/questions/3141560...value-parameter
I szok bo nikt mi nie odpisał że tak nie wolno i nie dobrze to stosować. Wiecie co mi odpisano: Podano mi link gdzie na tacy jest wyjaśnione tak że nawet ślepy to zobaczy.
http://stackoverflow.com/questions/5809951...or-placeholders
Go to the top of the page
+Quote Post
memory
post
Post #39





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


przecież dostałeś odpowiedź o co ci teraz chodzi?
Go to the top of the page
+Quote Post
CuteOne
post
Post #40





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


@MESSIAH (IMG:style_emoticons/default/smile.gif) jeżeli tamten temat wyglądał jak ten Temat: Czym zastapic eval to się nie dziwię, że zostałeś olany. Nawiasem mówiąc to widzę, że sporo problemów ci "te fachowcy" rozwiązali a psioczysz na nich.. bo?

Ten post edytował CuteOne 7.08.2015, 20:11:49
Go to the top of the page
+Quote Post
Daiquiri
post
Post #41





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Ludziska skończcie proszę te wycieczki osobiste - jest zdecydowanie za gorąco, żeby się dodatkowo pieklić. To po pierwsze (IMG:style_emoticons/default/smile.gif) .

Autor jasno napisał, że się dopiero uczy. Jego twórczość radosna w postaci klasy logowania to po prostu zapis tego, czego się nauczył. Bez tego nie bylibyśmy w stanie mu pomóc w nauce... bo nie moglibyśmy zobaczyć błędów jakie popełnia.

Pisanie o wynajdywaniu koła na nowo - ma na pewno jakiś sens. To jest naprawdę dobra rada (i jakże często niedoceniana!)... aczkolwiek nie powinna zniechęcać do tworzenia własnych rozwiązań - zwłaszcza, jeżeli jest to forma nauki. Od czegoś trzeba zacząć.

I meritum: uważam, że jeżeli krytykujemy rozwiązania to chociaż podajmy namiastkę opisu jak powinno się to zrobić lepiej, lub co jest nie tak. Postarajcie się o te kilka słów więcej.

@Damonsson,
W swojej pierwszej odpowiedzi, to z całą sympatią do Ciebie, ale "(...) co jest dobrze: nic" w połączeniu z "Może komuś będzie się chciało tłumaczyć" to trochę przesada. Bo tak na dobrą sprawę napisałeś "Wszystko jest źle, ale nie chce mi się tłumaczyć dlaczego" :-). Myślę, że na pierwszy rzut oka mógłbyś wskazać kilka drobnych błędów, niekoniecznie od razu wszystkie.
Go to the top of the page
+Quote Post
marcio
post
Post #42





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

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


Cytat
Przecież już Ci wyjaśnił że nie, ponieważ nie wymyślałby koła na nowo, tylko skopiował z S2

To po jakiego wala sie tu udziela ?
Go to the top of the page
+Quote Post
!*!
post
Post #43





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(marcio @ 8.08.2015, 13:05:01 ) *
To po jakiego wala sie tu udziela ?


W skrócie... bo może. A to czy ktoś z Nas kwestionuje jego wypowiedzi lub innych jest zupełnie innym wątkiem. Rozumiem Cie i też ubolewam z tego powodu, forum jest jakie jest.
Go to the top of the page
+Quote Post
Daiquiri
post
Post #44





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




!*!, Marcio - nie zaśmiecajcie już tematu.
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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.12.2025 - 08:28