Maison > développement back-end > Tutoriel Python > Explication détaillée des étapes spécifiques pour écrire une fenêtre de connexion

Explication détaillée des étapes spécifiques pour écrire une fenêtre de connexion

PHP中文网
Libérer: 2017-06-20 13:47:46
original
1603 Les gens l'ont consulté

Idées :

1. Modèle de référence Pour cette mission, j'ai fait référence au processus d'authentification de connexion Linux et combiné avec les services bancaires en ligne, Alipay et d'autres règles de verrouillage

1) Le processus d'authentification fait référence à la connexion Linux : après avoir entré le nom d'utilisateur et le mot de passe, vérifiez si le nom d'utilisateur existe et si l'utilisateur est verrouillé, puis vérifiez si le mot de passe est correct. Si la vérification échoue, il est correct. vous dira seulement que la vérification a échoué, et non si le nom d'utilisateur ou le mot de passe est erroné, ce qui augmente la difficulté du craquage par force brute

2) Concernant le comptage et le verrouillage des le nombre de saisies incorrectes , je fais référence à C'est ce que les banques et Alipay font, c'est-à-dire qu'elles ne se soucient que du nombre de fois où vous vous avez mal saisi et s'en moquent combien de fois vous avez mal saisi, ce qui signifie que vous avez mal saisi deux fois et la troisième fois. Si vous saisissez correctement, le compte précédent n'est pas effacé, c'est-à-dire que vous avez entré 1 000 fois aujourd'hui et perdu 997 fois correctement, et n'a été mal saisi que 3 fois. Désolé, vous devez quand même le verrouiller. Et les trois entrées incorrectes ne doivent pas nécessairement être consécutives. Il sera verrouillé après trois entrées incorrectes à trois reprises.

2. Concernant la sauvegarde du

nombre et du statut, je considère la persistance et la sauvegarde via des fichiers, et l' accumulation et le verrouillage de chaque nombre d'erreurs de saisie sont enregistré. dans le fichier . Bien que cela augmente le fonctionnement du fichier, cela garantit la fiabilité du programme, de cette façon, lorsque le programme se termine, le décompte est toujours valide. Les types de fichiers sont les suivants :

alex sb lock 3

tom 666 déverrouiller 0 geng 888 déverrouiller 2

Le la première colonne est le nom d'utilisateur, la deuxième colonne est le mot de passe, la troisième colonne est le statut de l'utilisateur (verrouiller signifie verrouillé, déverrouiller signifie non verrouillé) et la quatrième colonne est le nombre de connexions (en fait, le nombre de connexions uniquement). doit être augmenté de un lorsque l'erreur est commise, non (ne vous inquiétez pas si c'est faux).

Le code est le suivant :

           with open(filename,)           key,values                           lines =                print(             f.write( .join(lines) +                           values.insert(             f.write( .join(values) +   # messages = {:[,,],:[,,],:[,, # write_file(messages,   __name__ ==      active =               username = input(         users_dict = {}     #用户字典,用于存放用户的信息,键-用户名,值-         with open(,)              lines =              line                  user_list =                 users_dict[user_list[]] = user_list[           username               users_dict[username][] ==                  print(                                (users_dict[username][]) <                      user_pwd = input(                      users_dict[username][] ==                         print(                                               (users_dict[username][]) !=                              print( % ( - (users_dict[username][                         users_dict[username][] = (users_dict[username][]) +                                        print(                     users_dict[username][] =                      users_dict[username][] =                      write_file(users_dict,         elif username ==                         print()
运行结果如下:
请输入你的用户名(输入quit退出):tom
请输入密码:22
还有2次机会,用户将被锁定!
请输入密码:22
还有1次机会,用户将被锁定!
请输入密码:22
对不起,您输入的次数过多,你的用户名已经被锁定,请联系管理员!
请输入你的用户名(输入quit退出):alex
您输入的用户名已经锁定,请联系管理员!
Copier après la connexion
En fait, le fonctionnement des fichiers est essentiellement le fonctionnement de listes de chaînes, d'opérations de dictionnaire, d'opérations de fichiers et de méthodes de lecture de fichiers. readlines() les lit et les stocke dans une liste ligne par ligne, et utilise dict (dictionnaire). ) pour enregistrer les informations des utilisateurs. Méthode d'épissage de chaînes (join), (" ".join(list)), les chaînes et les listes sont épissées pour former une nouvelle chaîne. En fait, les chaînes sont essentiellement stockées sous forme de listes en python, épissage entre listes. , list.extend(list), épissage entre les listes.

Description du code :

1. Deux contenus non abordés dans le cours d'aujourd'hui sont utilisés ici : les dictionnaires et les fonctions pour convertir les informations utilisateur en dictionnaires. la raison de l'enregistrement de cette manière est de déterminer si le nom d'utilisateur existe. Lors de la lecture du fichier, le nom d'utilisateur est directement utilisé comme clé du dictionnaire et d'autres informations sont utilisées comme valeur du dictionnaire en tête-à-tête. correspondance avec la clé. De cette façon, seul le nom d'utilisateur est nécessaire pour déterminer si le nom d'utilisateur existe. Utilisez simplement l'opérateur membre in pour juger

2. Lignes 61 et 62. du code termine le processus de transformation du fichier en dictionnaire.

Exemple de code original de Zhang Xiaoyu :

Points forts du code ci-dessus :

(1) continuer : mettre fin à cette boucle. Le code après la poursuite ne sera pas exécuté pour atteindre l'objectif de permettre à l'utilisateur de. saisissez à nouveau. Beaucoup La page Web permet aux utilisateurs de continuer à taper jusqu'à ce que l'utilisateur choisisse de s'inscrire ou de fermer la page Web

(2) Le document est relativement standardisé et contient des explications ;

(3) Le fichier est lu ligne par ligne, puis écrit dans le fichier ligne par ligne. La connaissance des listes et des dictionnaires doit être utilisée dans le processus de modification .

(4) " ".join(list) concatène des chaînes et des listes pour générer de nouvelles chaînes

(5) fractionnement de chaîne split() extend() entre ; répertorie l'épissage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal