Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL bagaimana membuat nilai kedaluwarsa?

Di sebelah resetkey kolom tempatkan DATETIME kolom yang disebut, mungkin, expires .

Kemudian, setiap kali Anda memasukkan kunci reset baru, masukkan juga nilai ke dalam kedaluwarsa:

INSERT INTO forgot (resetkey, expires) VALUES (whatever, NOW() + INTERVAL 48 HOUR)

Tepat sebelum Anda membaca kunci reset dari tabel, lakukan ini:

DELETE FROM forgot WHERE expires < NOW()

Maka Anda tidak akan pernah melihat kunci yang kedaluwarsa; mereka akan selalu dimusnahkan jika sudah kedaluwarsa.

Sekarang, Anda dapat memilih untuk melakukan sesuatu dengan mencari kunci reset yang disediakan pengguna. Jika kedaluwarsa, Anda dapat mengumumkannya kepada pengguna:"Kunci reset Anda telah kedaluwarsa." Tapi itu ide buruk ... demi keamanan Anda tidak boleh membantu pengguna memahami mengapa token keamanan seperti kunci reset tidak valid. Anda hanya harus mengatakan "kunci reset itu tidak benar".

Apakah ini membuka kemungkinan bahwa beberapa baris yang berisi token kedaluwarsa akan tetap ada di tabel? Ya. Tetapi tidak mungkin aplikasi Anda benar-benar membacanya dan menggunakannya jika Anda mengikuti prosedur menghapus yang kedaluwarsa sebelum menggunakan token apa pun. Jika Anda memiliki alasan untuk menghindari menyimpan token yang kedaluwarsa di tabel meskipun tidak berguna, Anda dapat menyiapkan EVENT atau jenis pekerjaan lain yang dijadwalkan secara rutin untuk menjalankan DELETE pernyataan yang saya sebutkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ekspor database MySQL menggunakan PHP

  2. Optimalkan permintaan MySQL untuk menghindari Menggunakan di mana; Menggunakan sementara; Menggunakan filesort

  3. Menemukan id berikutnya yang tersedia di MySQL

  4. MySQL Memesan dengan nomor, Nulls terakhir

  5. Cara mengubah posisi MYSQL db di PHP