Maison > Questions et réponses > le corps du texte
J'enregistre le nombre d'erreurs de connexion et la durée de la session. Lorsque le nombre maximum d'erreurs est atteint, je ne pourrai pas me connecter. Cependant, je peux toujours me connecter après avoir effacé les cookies. Comment dois-je le résoudre ? Ou existe-t-il un autre moyen de limiter le nombre de connexions ? Merci!
我想大声告诉你2017-05-31 10:35:27
Ajoutez un champ à la base de données et verrouillez le compte si le nombre de fois est dépassé...
给我你的怀抱2017-05-31 10:35:27
Utilisez Memcache ou Redis pour le contrôle du cache
$key = compte de connexion
$value = Nombre de connexions échouées
$this->set($clé,$valeur);
高洛峰2017-05-31 10:35:27
Utilisez ip et HTTP_USER_AGENT pour déterminer s'il s'agit du même utilisateur
高洛峰2017-05-31 10:35:27
Une situation comme la vôtre ne peut être gérée que via le cache global. Si vous souhaitez contrôler le nombre de connexions pour un certain nom d'utilisateur, alors
1 Pour la mise en cache des valeurs clés
structure de données unifiée key=value => username={'number of logins':1}, puis utilisez redis, memcache, mysql. (Créer une table de cache, une colonne [valeur clé], une clé de hachage d'index)
Directement $userinfo = $cacheobj->get('username') pour obtenir des informations sur l'utilisateur, déterminer le nombre de connexions et augmenter le nombre de connexions $cacheobj -> set('nom d'utilisateur', $userinfo) réécrivez
2. Incorporez-le dans la structure de la table d'informations de connexion à la base de données
Ajoutez une nouvelle colonne de numéro de connexion à la table de connexion de l'utilisateur MySQL, puis appelez SQL, obtenez, jugez, incrémentez-la automatiquement et mettez-la à jour
Si vous souhaitez inclure la latitude temporelle, alors
1. Pour la mise en cache des valeurs-clés
, la structure des données est mise à jour avec le nom d'utilisateur = {'nombre de connexions' : 1, 'délai d'expiration' : horodatage}, et le jugement plus la latitude temporelle sont ajoutés au jugement lorsque le délai d'expiration se produit. le nombre de connexions est fixé à 0
2. Pour le cache de valeurs de clés non mysql (redis, memcache)
Direct $cacheobj->set('username', 'number of logins', timeout)
3. Incorporez-le dans la structure du tableau d'informations de connexion à la base de données
Dans ce cas, ajoutez une colonne de délai d'attente
Il existe d'innombrables façons de le mettre en œuvre, principalement en fonction du scénario réel et des ressources.