Automatiser une création de compte sur un programme
Résolu
Frizti
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
-
Frizti Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
Frizti Messages postés 112 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Automatiser une création de compte sur un programme
- Creation compte gmail - Guide
- Créer un compte google - Guide
- Créer un compte instagram sur google - Guide
- Creation compte vinted - Guide
- Creation de site web - Guide
16 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, je pense que c'est possible.
Enregistrer des données permanentes se fait sur le disque dur (ou autre support physique).
Donc, il t’incombe d'enregistrer login et mot de passe dans un fichier ou éventuellement une base de données, comme tu débutes le choix d'un simple fichier semble le plus simple.
Et ensuite lorsqu'un utilisateur voudra se connecter, il suffira de vérifier que le couple login, password est présent dans ton fichier, et si tu ne veux pas que l'on puisse lire directement les valeurs de ton fichier, tu pourrais également utiliser des fonctions de hash.
Attention, avant d'enregistrer un nouvel utilisateur, il faudra vérifier que le pseudo choisi n'existe pas déjà dans ton fichier.
Donc, il t’incombe d'enregistrer login et mot de passe dans un fichier ou éventuellement une base de données, comme tu débutes le choix d'un simple fichier semble le plus simple.
Et ensuite lorsqu'un utilisateur voudra se connecter, il suffira de vérifier que le couple login, password est présent dans ton fichier, et si tu ne veux pas que l'on puisse lire directement les valeurs de ton fichier, tu pourrais également utiliser des fonctions de hash.
Attention, avant d'enregistrer un nouvel utilisateur, il faudra vérifier que le pseudo choisi n'existe pas déjà dans ton fichier.
D'accord, merci mais comment dois-je faire pour que mon programme accède à ce dit fichié et comment configurer celui-ci ?
Ce fichier, c'est toi qui dois le créer, ouvrir un fichier se fait avec open en python.
Et dedans tu auras juste des lignes, avec un séparateur nom, séparateur, mdp, un fichier csv en gros.
riri,mdp_de_riri
fifi,mdp_de_fifi
Il y a d'autres format de fichier que tu pourrais aussi utiliser, json, xml (plus compliqué).
Et dedans tu auras juste des lignes, avec un séparateur nom, séparateur, mdp, un fichier csv en gros.
riri,mdp_de_riri
fifi,mdp_de_fifi
Il y a d'autres format de fichier que tu pourrais aussi utiliser, json, xml (plus compliqué).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
D'accord, et comment dois-je faire pour que les informations présentes dans ce fichier soient utilisées ?
je ne débute pas, je suis justement e n train d'apprendre a utiliser des fichiers textes dans un programme
Un programme, c'est aussi faire des fonctions.
Admettons, un fichier users.txt
Avec dedans 2 enregistrements.
On écrit ensuite quelques fonctions permettant de travailler.
Puis on effectue quelques tests pour voir si tout fonctionne comme on veut.
Et voilà, tu vois quelque chose de compliqué là-dedans ?
Tu peux aussi mettre d'autres parties de ton programme dans des fonction, le message de connexion au terminal, le menu, etc.
En faisant ça, ton script sera beaucoup plus limpide.
Admettons, un fichier users.txt
Avec dedans 2 enregistrements.
toto:123456
lulu:roxor
On écrit ensuite quelques fonctions permettant de travailler.
USERS_FILE = 'users.txt' def user_save(user_name, user_password): with open(USERS_FILE, 'a') as f: f.write('{}:{}\n'.format(user_name, user_password)) def users_load(): users = [] with open(USERS_FILE) as f: for line in f: users.append(line.rstrip().split(':')) return users def user_exists(user_name): users = users_load() for name, _ in users: if name == user_name: return True return False def user_connect(user_name, user_password): users = users_load() for name, password in users: if name == user_name: if password == user_password: return True break return False
Puis on effectue quelques tests pour voir si tout fonctionne comme on veut.
print(user_connect('toto', '1234')) print(user_connect('toto', '123456')) print(user_exists('lulu')) print(user_connect('lulu', 'roxor')) name = 'loulou' password = '42çarox' if not user_exists(name): user_save(name, password) print(name, 'saved') else: print('username', name, 'exists') print(user_connect(name, '123456')) print(user_connect(name, password))
Et voilà, tu vois quelque chose de compliqué là-dedans ?
Tu peux aussi mettre d'autres parties de ton programme dans des fonction, le message de connexion au terminal, le menu, etc.
En faisant ça, ton script sera beaucoup plus limpide.
ça marche pas pour moi, a moins que je fasse la mauvaise technique ou le mauvais placement, j'ai tout mis dans un seul et même programme (a part les utilisateurs bien sur)
Tu plaisantes ?
Le script que je t'ai mis n'est pas à placer comme ça dans ton fichier, il est à lire, comprendre, cela fait tu pourras intégrer cela à ton script.
De toute façon, je crois qu'il faut que tu repasses par la case tuto, là tu es ivre et en excès de vitesse, tu perds le contrôle de ton véhicule, tu vas bientôt te crasher dans le pilier de pont un peu plus loin.
Le script que je t'ai mis n'est pas à placer comme ça dans ton fichier, il est à lire, comprendre, cela fait tu pourras intégrer cela à ton script.
De toute façon, je crois qu'il faut que tu repasses par la case tuto, là tu es ivre et en excès de vitesse, tu perds le contrôle de ton véhicule, tu vas bientôt te crasher dans le pilier de pont un peu plus loin.
OwO j'ai un nouveau problème : je n'arrive pas a supprimer un utilisateur, quelle commande dois-je utiliser ? (désolé mais j'ai un piètre niveau en utilisation de fichiers externes au programme)
Ah ! non en fait, je croyais que ça marchait comme il n'y avait pas de message d'erreur mais ça ne marche pas.
je cherche a faire ça avec cette commande:
mais ça ne marche pas, pouvez-vous m'aider ?
je cherche a faire ça avec cette commande:
u = input("Entrez ceci : '<pseudo>:<mdp>' : ") users_file.remove("{}".format(u)) if u not in users_file: print("Suppression effectuée avec succès !") else: print("Echec de la supression.")
mais ça ne marche pas, pouvez-vous m'aider ?
Bonjour,
Lorsqu'on cherche à supprimer un utilisateur, donc une opération d'administration, on se fiche du mot de passe, d'ailleurs un administrateur n'a pas à connaître les mots de passes des utilisateurs. La seule chose dont on dispose est (ici) le pseudo.
Donc on charge le fichier dans une liste (avec readlines), on parcourt cette liste, on scinde la ligne par le séparateur de valeurs, on regarde si le premier élément vaut le pseudo à supprimer et on supprime la ligne dans ce cas.
Cette opération effectuée, on écrit la liste modifiée dans le fichier (avec writelines).
Mais généralement, on ne supprime pas vraiment un utilisateur, on rend plutôt un compte inactif, par exemple ajouter un 3ème élément dans ton fichier users avec pour valeur 0 ou 1, 0 signifiera que le compte est inactif.
Lorsqu'on cherche à supprimer un utilisateur, donc une opération d'administration, on se fiche du mot de passe, d'ailleurs un administrateur n'a pas à connaître les mots de passes des utilisateurs. La seule chose dont on dispose est (ici) le pseudo.
Donc on charge le fichier dans une liste (avec readlines), on parcourt cette liste, on scinde la ligne par le séparateur de valeurs, on regarde si le premier élément vaut le pseudo à supprimer et on supprime la ligne dans ce cas.
Cette opération effectuée, on écrit la liste modifiée dans le fichier (avec writelines).
Mais généralement, on ne supprime pas vraiment un utilisateur, on rend plutôt un compte inactif, par exemple ajouter un 3ème élément dans ton fichier users avec pour valeur 0 ou 1, 0 signifiera que le compte est inactif.
euh la commande ne marche pas à moins que je me trompe
(je pense que je me trompe)
le code:
(je pense que je me trompe)
le code:
fic = open("105 12.46.13.txt", "r") print("Liste des utilisateurs :") content = fic.read() print(content) u=input("Quel utilisateur souhaitez vous supprimer (entrez son pseudonyme) : ") fic.readlines() if u in fic: fic.writelines("") print("Suppression efféctuée avec succès !") fic.close() else: print("Echec de la suppression.") fic.close()
Ce n'est pas que tu te trompes, mais c'est que tu fais n'importe quoi.
fic.read() lit l'intégralité du fichier et retourne le contenu entier du fichier dans une chaine.
fic.readlines() lit l'intégralité du fichier et retourne une liste des lignes du fichier.
https://docs.python.org/3/library/io.html#io.IOBase.readlines
A tester sur un fichier users.txt avec par ex. des valeurs comme.
Et viens pas encore me dire que ça ne fonctionne pas :D
fic.read() lit l'intégralité du fichier et retourne le contenu entier du fichier dans une chaine.
fic.readlines() lit l'intégralité du fichier et retourne une liste des lignes du fichier.
https://docs.python.org/3/library/io.html#io.IOBase.readlines
user_to_del = 'titi' with open('users.txt') as f: users = f.readlines() for user in users: # En cas de ligne vide éventuelle dans le fichier if not user.strip(): continue # Séparation en 2 name, _ = user.split(':', 1) if name == user_to_del: users.remove(user) print('user', user_to_del, 'deleted') break else: raise ValueError('user {} not found'.format(user_to_del)) with open('users.txt', 'w') as f: f.writelines(users)
A tester sur un fichier users.txt avec par ex. des valeurs comme.
toto:123456
lulu:roxor
titi:mdp
lily:plip
Et viens pas encore me dire que ça ne fonctionne pas :D
je pense que c'est sensé fonctionner mais idle me dit que là :
il y a un problème d'indentation
user_to_del = '' user_to_del = input("Veuillez entrer un pseudonyme : ") with open('users.txt') as f: users = f.readlines() for user in users: if not user.strip(): continue name, _ = user.split(':', 1)#ici if name == user_to_del: users.remove(user) print('user', user_to_del, 'deleted') break else: raise ValueError('user {} not found'.format(user_to_del)) with open('users.txt', 'w') as f: f.writelines(users)
il y a un problème d'indentation
CCM écorche mon code voici le bon:
user_to_del = ''
user_to_del = input("Veuillez entrer un pseudonyme : ")
with open('users.txt') as f:
users = f.readlines()
for user in users:
if not user.strip():
continue
name, _ = user.split(':', 1)
if name == user_to_del:
users.remove(user)
print('user', user_to_del, 'deleted')
break
else:
raise ValueError('user {} not found'.format(user_to_del))
with open('users.txt', 'w') as f:
f.writelines(users)
user_to_del = ''
user_to_del = input("Veuillez entrer un pseudonyme : ")
with open('users.txt') as f:
users = f.readlines()
for user in users:
if not user.strip():
continue
name, _ = user.split(':', 1)
if name == user_to_del:
users.remove(user)
print('user', user_to_del, 'deleted')
break
else:
raise ValueError('user {} not found'.format(user_to_del))
with open('users.txt', 'w') as f:
f.writelines(users)
user_to_del = "" user_to_del = input("Veuillez entrer un pseudonyme : ") with open('users.txt') as f: users = f.readlines() for user in users: if not user.strip(): continue name, _ = user.split(':', 1) if name == user_to_del: users.remove(user) print('user', user_to_del, 'deleted') break else: raise ValueError('user {} not found'.format(user_to_del)) with open('users.txt', 'w') as f: f.writelines(users)
On va quand même pas jouer aux devinettes !
Edite ton précédent message et mets en forme correctement ton code.
On ne mélange pas indentation avec espaces et indentation avec tabulations, et j'ai même pas du à tester ton code, le fait de prendre ton code en sélection, en partant du début et en avançant, on voit qu'il y a une tabulation avant le raise...
Edite ton précédent message et mets en forme correctement ton code.
On ne mélange pas indentation avec espaces et indentation avec tabulations, et j'ai même pas du à tester ton code, le fait de prendre ton code en sélection, en partant du début et en avançant, on voit qu'il y a une tabulation avant le raise...
https://www.commentcamarche.net/infos/25923-faire-un-copier-coller/#copier-coller-un-texte
https://forums.commentcamarche.net/forum/affich-36391730-automatiser-une-creation-de-compte-sur-un-programme#22
Si t'es pas capable de faire ça, laisse tomber la programmation.
J'ai l'impression que tu trolles, donc pour ma part, je ne réponds plus.
https://forums.commentcamarche.net/forum/affich-36391730-automatiser-une-creation-de-compte-sur-un-programme#22
Si t'es pas capable de faire ça, laisse tomber la programmation.
J'ai l'impression que tu trolles, donc pour ma part, je ne réponds plus.