Saya menyimpan bilangan ralat log masuk dan masa dalam sesi Apabila bilangan ralat maksimum dicapai, saya tidak akan dapat log masuk. Namun, saya masih boleh log masuk selepas membersihkan kuki. Bagaimana saya harus menyelesaikannya? Atau adakah terdapat cara lain untuk mengehadkan bilangan log masuk? Terima kasih!
Tambah medan pada pangkalan data dan kunci akaun jika bilangan kali melebihi...
Gunakan memcache atau redis untuk kawalan cache
$key = akaun log masuk
$value = Bilangan log masuk yang gagal
$ini->set($key,$value);
Gunakan ip dan HTTP_USER_AGENT untuk menentukan sama ada ia adalah pengguna yang sama
Situasi seperti anda hanya boleh dikendalikan melalui cache global. Jika anda ingin mengawal bilangan log masuk untuk nama pengguna tertentu, maka
1 Untuk caching nilai kunci
unified data structure key=value => username={'number of logs':1}, dan kemudian gunakan redis, memcache, mysql. (Buat jadual cache, lajur [nilai kunci], kunci cincang indeks)
Secara langsung $userinfo = $cacheobj->get('username') untuk mendapatkan maklumat pengguna, tentukan bilangan log masuk dan tambah bilangan log masuk $cacheobj -> set('nama pengguna', $userinfo) tulis balik
2. Masukkannya ke dalam struktur jadual maklumat log masuk pangkalan data
Tambah lajur nombor log masuk baharu pada jadual log masuk pengguna mysql, dan kemudian panggil sql, dapatkan, hakim, kenaikan automatik, dan kemas kini
Jika anda ingin memasukkan latitud masa, maka
1. Untuk cache nilai kunci
struktur data dikemas kini kepada nama pengguna = {'bilangan log masuk': 1, 'masa tamat masa': cap waktu}, dan penghakiman ditambah latitud masa ditambahkan pada penghakiman. bilangan log masuk ditetapkan kepada 0
2. Untuk cache nilai kunci bukan mysql (redis, memcache)
Tetapkan $cacheobj->('nama pengguna', 'bilangan log masuk', tamat masa)
3 Masukkannya ke dalam struktur jadual maklumat log masuk pangkalan data
Dalam kes ini, tambah lajur tamat masa
Terdapat banyak cara untuk melaksanakannya, terutamanya bergantung pada senario dan sumber sebenar.