Python noms d'utilisateur et mots de passe
Je suis en train de créer un programme dans lequel vous pouvez créer, connecter, et de supprimer des comptes. J'ai fait 2 listes, l'une avec les noms d'utilisateur et un mot de passe. Le script demande pour une entrée et, si vous le dites vous connecter, il dit:
if loginchoice=='login':
choice = raw_input("What is your username? ")
choice2 = raw_input("What is your password? ")
if choice in accounts:
option1=1
else:
option1=0
if choice2 in password:
option2=1
else:
option2=0
if option1==1 and option2==1:
print "Welcome to Telemology,", choice
else:
print "The username or password you entered is incorrect. Please try again or register."
Comme vous pouvez le voir, il ne vérifie pour voir si les entrées sont déjà dans les listes. Il ne voit pas si les entrées ont le même index. Je ne peux pas mettre "des comptes.index(au choix)" parce qu'il traite du "choix" comme un entier. Il en va de même pour les citations en raison de cordes. Il n'a pas les traiter comme des variables. Est-il un moyen de contourner cela?
J'espère que si ma question obtient répondu, deux personnes ne sont pas inscrire simultanément et glitch les indices.
OriginalL'auteur user547853 | 2010-12-19
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez, c'est une mise en correspondance ou un dictionnaire. Sa clé de nom d'utilisateur, de son contenu le mot de passe du nom d'utilisateur.
Bien sûr, dans un système réel, vous auriez stocker les mots de passe salée et chiffré.
OriginalL'auteur 9000
Vous devez utiliser le getpass module pour vous assurer que le mot de passe n'est pas affiché à l'écran et le hashlib module de dire que le raw mot de passe n'est pas stocké. Voici une classe qui utilise à la fois des modules et devrait fonctionner sur python2 et python3. Si vous souhaitez charger à partir d'un fichier de l', vous devez stocker le UserDB.les utilisateurs attribut dans un fichier, vous pouvez utiliser le module json pour le faire.
OriginalL'auteur Hugh Williams
Créer une liste d'utilisateurs au lieu de cela, et de créer des objets Utilisateur, qui ont nom d'utilisateur et le mot de passe en tant qu'attributs.
Deux listes qui se passe pour obtenir la désynchronisation tôt ou tard.
OriginalL'auteur Lennart Regebro
Car il est
login
, elle doit être unique, et vous pouvez faire un dictionnaire:et de vérifier ensuite comme ceci:
Merci, mis à jour.
OriginalL'auteur khachik
Quelques problèmes que je vois:
Je n'ai pas trouvé le portable de façon à ne pas l'écho des mots de passe. #2 est résolu avec un dictionnaire. Comme pour le #3, vous voudrez probablement utiliser la hashlib module:
Remplacer
sha224
avec ce que l'algorithme de hachage que vous voulez; je n'ai pas gardé la trace de ceux qui sont encore bonnes pour les mots de passe.EDIT: Concernant le problème n ° 1, si vous exécutez une POSIX-système (c'est à dire non à un prompt de Windows), vous pouvez utiliser un exemple de code à partir de Python de la page pour la termios module pour obtenir un mot de passe sans afficher à l'écran:
Que ce n'est pas
*
's pour les personnages; simplement, il supprime l'entrée. Pour mettre en place*
's, vous avez à gérer l'entrée d'un caractère et d'écrire plus de code.OriginalL'auteur Mike DeSimone
j'ai un code très simple qui s'installe deux atemps à votre mot de passe si elles ne correspondent pas il l'habitude de travailler
OriginalL'auteur Jordan Bennett
Ou vous pouvez simplement SQLite3 db. Qui va vous permettre d'ajouter des utilisateurs et mot de passe sur l'exécution. SQLite3 fournit également de hachage.
OriginalL'auteur Pwnna
Vous pouvez toujours créer un dictionnaire avec les noms de compte et leur mot de passe respectif.
dictionary={'username':'password','some other username':'some other password'}
if dictionary[choice] == choice2:
print 'Welcome to Telemology, %s' %choice
OriginalL'auteur JAW
Vous devez modifier l'entrée de votre mot de passe pour entier comme suit:
et puis tout devrait fonctionner.
OriginalL'auteur user8008466