рдЪреВрдВрдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рджрд░реНрд╢рдХ рдРрд╕реЗ рд╡рд┐рд╖рдп рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рдирд╣реАрдВ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдмрд╛рд░ (рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛) рд▓рд┐рдВрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдХрд┐ рдореИрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ (рдЬрд┐рд╕реЗ рдореИрдВ рдиреАрдЪреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛) рдЕрдзрд┐рдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп - рдореИрдВрдиреЗ рдпрд╣ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ:
рд╕рдм рдХреБрдЫ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЕрдм рд╣рд╛рде рдореЗрдВ рд╣реИред рдкреЛрд╕реНрдЯрдЧреНрд░реЗ, рдУрд░реЗрдХрд▓ рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди 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
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
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
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
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
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
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
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
- <? php
- $ db = рдирдпрд╛ PDO ( 'mysql: host = 127.0.0.1; dbname = test' , 'root' );
- $ db -> setAttribute ( PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
- $ рдЕрде = рдирдпрд╛ рдПрдХ_ рд╕рдордп_рде ( $ рдбреАрдмреА );
- $ рдЯреЛрдХрди = $ рдСрдХреНрдЯреЛрд░ -> рдпрд╛рдж рд░рдЦреЗрдВ ( 10 , '2010-12-31' );
- $ user_id = $ рд╕реНрдерд┐рддрд┐ -> рдпрд╛рдж ( $ рдЯреЛрдХрди );
- рдЗрдХреЛ $ user_id ;
- рд╡рд░реНрдЧ one_time_auth
- {
- / ** <br/> * @рд╡рд░ рдкреАрдбреАрдУ <br/> * /
- рдирд┐рдЬреА $ db ;
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ __construct ( рдкреАрдбреАрдУ $ db )
- {
- $ рдпрд╣ -> рдбреАрдмреА = $ рдбреАрдмреА ;
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛рдж рд░рдЦреЗрдВ ( $ user_id , $ expire = null )
- {
- $ sql = 'INSERT INTO one_time_auth (рдЯреЛрдХрди, user_id, expire) VALUES (: token ,: user_id ,: expire)' ;
- $ stmt = $ this -> db-> рддреИрдпрд╛рд░ ( $ sql );
- рдЬрдмрдХрд┐ ( рд╕рдЪреНрдЪрд╛ ) {
- рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
- $ stmt -> рдирд┐рд╖реНрдкрд╛рджрд┐рдд ( рд╕рд░рдгреА ()
- ': рдЯреЛрдХрди' => $ рдЯреЛрдХрди = $ рдпрд╣ -> рдЬреЗрдирд░реЗрдЯ рдЯреЛрдХрди (),
- 'user_id' => $ user_id ,
- 'рдПрдХреНрд╕рдкрд╛рдпрд░' => $ рдПрдХреНрд╕рдкрд╛рдпрд░
- ));
- рддреЛрдбрд╝рдирд╛ ;
- } рдкрдХрдбрд╝ ( PDOException $ e ) {}
- }
- $ рдЯреЛрдХрди рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ;
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ ( $ рдЯреЛрдХрди )
- {
- $ sql = 'SELECT user_id <br/> one_time_auth <br/> рд╕реЗ рдЬрд╣рд╛рдВ рдЯреЛрдХрди =: token <br/> рдФрд░ (IS NULL рдпрд╛ рдПрдХреНрд╕рдкрд╛рдпрд░ <= рдЕрдм () рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ) <br /> рд╕реАрдорд╛ 1' ;
- $ stmt = $ this -> db-> рддреИрдпрд╛рд░ ( $ sql );
- $ stmt -> рдирд┐рд╖реНрдкрд╛рджрд┐рдд ( рд╕рд░рдгреА ( 'рдЯреЛрдХрди' => $ рдЯреЛрдХрди ));
- рдЕрдЧрд░ ( $ рдкрдВрдХреНрддрд┐ = $ stmt -> рд▓рд╛рдиреЗ ()) {
- $ stmt = $ рдпрд╣ -> db-> рддреИрдпрд╛рд░ ( 'DELETE FROM one_time_auth WHERE рдЯреЛрдХрди =: token' );
- $ stmt -> рдирд┐рд╖реНрдкрд╛рджрд┐рдд ( рд╕рд░рдгреА ( 'рдЯреЛрдХрди' => $ рдЯреЛрдХрди ));
- $ рдкрдВрдХреНрддрд┐ рд▓реМрдЯрд╛рдПрдБ [ 'user_id' ];
- }
- }
- рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рди
- {
- рд╡рд╛рдкрд╕реА md5 (uniqid ( '' , true ));
- }
- }
рдкреБрдирд╢реНрдЪ: рдХреЛрдб "рдШреБрдЯрдиреЗ рдкрд░" рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдмрд╕ рд╡рд┐рд╖рдп рдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд░реВрдк рдореЗрдВ
habrahabr.ru/blogs/phot/109421PPS: рдореИрдВ рддреБрд░рдВрдд md5 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ () - рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдИ "рдЫреЗрдж" рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рд╣реИрд╢ рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ sha1 (), рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рд╕реЗ рдмрдВрдзреЗ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред