рдЕрдВрджрд░ рдЖрдУ! рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг, v2

рдЪреВрдВрдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рджрд░реНрд╢рдХ рдРрд╕реЗ рд╡рд┐рд╖рдп рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рдирд╣реАрдВ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдмрд╛рд░ (рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛) рд▓рд┐рдВрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдХрд┐ рдореИрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ (рдЬрд┐рд╕реЗ рдореИрдВ рдиреАрдЪреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛) рдЕрдзрд┐рдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп - рдореИрдВрдиреЗ рдпрд╣ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ:



рд╕рдм рдХреБрдЫ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЕрдм рд╣рд╛рде рдореЗрдВ рд╣реИред рдкреЛрд╕реНрдЯрдЧреНрд░реЗ, рдУрд░реЗрдХрд▓ рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди 99% рд╕рдорд╛рди рд╣реЛрдЧрд╛ред



рднрдВрдбрд╛рд░рдг рддрд╛рд▓рд┐рдХрд╛:



Copy Source | Copy HTML CREATE TABLE test.one_time_auth( token CHAR (32), user_id INT (11) UNSIGNED NOT NULL , expire DATETIME DEFAULT NULL , PRIMARY KEY (token) ) ENGINE = INNODB



  1. Copy Source | Copy HTML CREATE TABLE test.one_time_auth( token CHAR (32), user_id INT (11) UNSIGNED NOT NULL , expire DATETIME DEFAULT NULL , PRIMARY KEY (token) ) ENGINE = INNODB



  2. Copy Source | Copy HTML CREATE TABLE test.one_time_auth( token CHAR (32), user_id INT (11) UNSIGNED NOT NULL , expire DATETIME DEFAULT NULL , PRIMARY KEY (token) ) ENGINE = INNODB



  3. Copy Source | Copy HTML CREATE TABLE test.one_time_auth( token CHAR (32), user_id INT (11) UNSIGNED NOT NULL , expire DATETIME DEFAULT NULL , PRIMARY KEY (token) ) ENGINE = INNODB



  4. Copy Source | Copy HTML CREATE TABLE test.one_time_auth( token CHAR (32), user_id INT (11) UNSIGNED NOT NULL , expire DATETIME DEFAULT NULL , PRIMARY KEY (token) ) ENGINE = INNODB



  5. Copy Source | Copy HTML CREATE TABLE test.one_time_auth( token CHAR (32), user_id INT (11) UNSIGNED NOT NULL , expire DATETIME DEFAULT NULL , PRIMARY KEY (token) ) ENGINE = INNODB



  6. Copy Source | Copy HTML CREATE TABLE test.one_time_auth( token CHAR (32), user_id INT (11) UNSIGNED NOT NULL , expire DATETIME DEFAULT NULL , PRIMARY KEY (token) ) ENGINE = INNODB



  7. Copy Source | Copy HTML CREATE TABLE test.one_time_auth( token CHAR (32), user_id INT (11) UNSIGNED NOT NULL , expire DATETIME DEFAULT NULL , PRIMARY KEY (token) ) ENGINE = INNODB







рдЦреИрд░, рдЕрдм рд╡рд░реНрдЧ рд╣реА + рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рдЗрд╕ рд╡рд░реНрд╖ рдХреА 31 рджрд┐рд╕рдВрдмрд░ рддрдХ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдХрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред



Copy Source | Copy HTML



  1. <? php
  2. $ db = рдирдпрд╛ PDO ( 'mysql: host = 127.0.0.1; dbname = test' , 'root' );
  3. $ db -> setAttribute ( PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
  4. $ рдЕрде = рдирдпрд╛ рдПрдХ_ рд╕рдордп_рде ( $ рдбреАрдмреА );
  5. $ рдЯреЛрдХрди = $ рдСрдХреНрдЯреЛрд░ -> рдпрд╛рдж рд░рдЦреЗрдВ ( 10 , '2010-12-31' );
  6. $ user_id = $ рд╕реНрдерд┐рддрд┐ -> рдпрд╛рдж ( $ рдЯреЛрдХрди );
  7. рдЗрдХреЛ $ user_id ;
  8. рд╡рд░реНрдЧ one_time_auth
  9. {
  10. / ** <br/> * @рд╡рд░ рдкреАрдбреАрдУ <br/> * /
  11. рдирд┐рдЬреА $ db ;
  12. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ __construct ( рдкреАрдбреАрдУ $ db )
  13. {
  14. $ рдпрд╣ -> рдбреАрдмреА = $ рдбреАрдмреА ;
  15. }
  16. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛рдж рд░рдЦреЗрдВ ( $ user_id , $ expire = null )
  17. {
  18. $ sql = 'INSERT INTO one_time_auth (рдЯреЛрдХрди, user_id, expire) VALUES (: token ,: user_id ,: expire)' ;
  19. $ stmt = $ this -> db-> рддреИрдпрд╛рд░ ( $ sql );
  20. рдЬрдмрдХрд┐ ( рд╕рдЪреНрдЪрд╛ ) {
  21. рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
  22. $ stmt -> рдирд┐рд╖реНрдкрд╛рджрд┐рдд ( рд╕рд░рдгреА ()
  23. ': рдЯреЛрдХрди' => $ рдЯреЛрдХрди = $ рдпрд╣ -> рдЬреЗрдирд░реЗрдЯ рдЯреЛрдХрди (),
  24. 'user_id' => $ user_id ,
  25. 'рдПрдХреНрд╕рдкрд╛рдпрд░' => $ рдПрдХреНрд╕рдкрд╛рдпрд░
  26. ));
  27. рддреЛрдбрд╝рдирд╛ ;
  28. } рдкрдХрдбрд╝ ( PDOException $ e ) {}
  29. }
  30. $ рдЯреЛрдХрди рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ;
  31. }
  32. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ ( $ рдЯреЛрдХрди )
  33. {
  34. $ sql = 'SELECT user_id <br/> one_time_auth <br/> рд╕реЗ рдЬрд╣рд╛рдВ рдЯреЛрдХрди =: token <br/> рдФрд░ (IS NULL рдпрд╛ рдПрдХреНрд╕рдкрд╛рдпрд░ <= рдЕрдм () рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ) <br /> рд╕реАрдорд╛ 1' ;
  35. $ stmt = $ this -> db-> рддреИрдпрд╛рд░ ( $ sql );
  36. $ stmt -> рдирд┐рд╖реНрдкрд╛рджрд┐рдд ( рд╕рд░рдгреА ( 'рдЯреЛрдХрди' => $ рдЯреЛрдХрди ));
  37. рдЕрдЧрд░ ( $ рдкрдВрдХреНрддрд┐ = $ stmt -> рд▓рд╛рдиреЗ ()) {
  38. $ stmt = $ рдпрд╣ -> db-> рддреИрдпрд╛рд░ ( 'DELETE FROM one_time_auth WHERE рдЯреЛрдХрди =: token' );
  39. $ stmt -> рдирд┐рд╖реНрдкрд╛рджрд┐рдд ( рд╕рд░рдгреА ( 'рдЯреЛрдХрди' => $ рдЯреЛрдХрди ));
  40. $ рдкрдВрдХреНрддрд┐ рд▓реМрдЯрд╛рдПрдБ [ 'user_id' ];
  41. }
  42. }
  43. рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рди
  44. {
  45. рд╡рд╛рдкрд╕реА md5 (uniqid ( '' , true ));
  46. }
  47. }


рдкреБрдирд╢реНрдЪ: рдХреЛрдб "рдШреБрдЯрдиреЗ рдкрд░" рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдмрд╕ рд╡рд┐рд╖рдп рдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд░реВрдк рдореЗрдВ habrahabr.ru/blogs/phot/109421



PPS: рдореИрдВ рддреБрд░рдВрдд md5 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ () - рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдИ "рдЫреЗрдж" рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рд╣реИрд╢ рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ sha1 (), рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рд╕реЗ рдмрдВрдзреЗ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред



All Articles