Problème lors de la création d'un fichier texte

Petit nouveau ! | 1 Messages

17 mai 2008, 18:05

Bonjour,
J'ai créé ces scripts, qui demandent un pseudo, un e-mail et un mot de passe à l'utilisateur et qui les enregistre dans un fichier texte portant le nom du pseudo entré le formulaire à l'appui du bouton "Ok".

Code : Tout sélectionner

<head> <title> Création d'un compte de jeu </title> <body TEXT="#000000" BGCOLOR="#FFFFFF" > <table des couleurs disponible sur http://www.commentcamarche.net/html/htmlcouleurs.php3> </head> <body> <H1>Inscription</H1> Vous pouvez... <br> Il....<br> Mais....<br> <H2>Formulaire</H2> <form method="post" action="confirm.html"> Pseudo : <input type="text" name="$pseudo" size="12"><br> Mot de passe : <input type="text" name="$Mdp" size="12"> <br> Votre adresse e-mail: <input type="text" name="$email" size="12"> <br> <input type="submit" value="OK" onClick= "Confirm.html"> </form></body></html>
Voilà pour la page .html
  <?php
   if($fp = fopen("$pseudo.txt","w")){ /* en écriture */  
   fputs($fp, "\n"); // Saute 1 ligne
   fputs($fp, "$pseudo"); //Sauvegarde du pseudo dans le fichier
   fputs($fp, "$Mdp"); //Sauvegarde du mot de passe dans le fichier
   fputs($fp, "$email"); //Sauvegarde de l'e-mail dans le fichier
   fclose($fp);}else{ //Si problème
   echo "Un problème est survenu. Contactez l'administrateur.";  
   exit();
   }
  ?>
 </body>
Pour le deuxième code je me suis aidé (plutôt beaucoup :lol: ) du tutoriel
http://www.phpfrance.com/tutoriaux/inde ... s-fichiers .
Le seul problème c'est que quand je teste mes scripts le fichier texte n'est pas créé.

Donc y-a-t-il une erreur (moi je la trouve pas) ?

Merci d'avance

PS: Je suis nouveau, alors j'espère avoir posté dans la bonne section. Désolé si c'est pas le cas...

S-F

Mammouth du PHP | 693 Messages

17 mai 2008, 19:37

Premièrement tTu accède aux variables envoyé par l'utilisateur via les superglobales $_POST ou $_GET, suivant la méthode d'envoi. Ici, c'est POST.

Deuxièmement, les guillement autour des variables ne servent à rien.

Troisièmement, si tu veux exloiter ces données, il vaudrait mieux mettre des séparateurs entre les informations, ca sera plus simple à exploiter.

Enfin, sauvegarder des mots de passe non encrypté n'est pas très sécurisé. Tu peux les encrypté via md5()

ViPHP
AB
ViPHP | 5818 Messages

18 mai 2008, 21:04

Enfin, sauvegarder des mots de passe non encrypté n'est pas très sécurisé. Tu peux les encrypté via md5()
Quand on parle md5, mieux vaut dire hashé, qu'encrypté. En effet parler d'encryptage sous entend décryptage. Le md5 ou le sha1 sont des hash et donc par définition ils ne peuvent être décryptés.

C'est d'ailleurs le pb d'avoir des mots de passe hashés. La sécurité est améliorée mais d'un autre côté si un utilisateur oublie son mot de passe on ne pourra pas le lui communiquer; il faudra en recréer un autre.
Modifié en dernier par AB le 18 mai 2008, 22:44, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

18 mai 2008, 21:23

@savant-fou

Si tu nous a montré tout ton code y'a des erreurs pour la récupération des variables dans ton code php
if($fp = fopen("$pseudo.txt","w")) 
Elle est définie où cette variable $pseudo?

Il faut récupérer les variables comme l'a indiqué orgerix

Tyiquement, dans ton cas ce serait donc
$pseudo = isset($_POST['pseudo'])? $_POST['pseudo'] : '';
et pareil pour les autres variables

Il y a des incohérences dans le code html du formulaire. Normalement ce devrait être

Code : Tout sélectionner

name="pseudo" (et non pas name="$pseudo") name="Mdp" name="email"

Mammouth du PHP | 693 Messages

18 mai 2008, 21:47

Enfin, sauvegarder des mots de passe non encrypté n'est pas très sécurisé. Tu peux les encrypté via md5()
Quand on parle md5, mieux vaut dire hashé, qu'encrypté. En effet parler d'encryptage sous entend décryptage. Le md5 ou le sha1 sont des hash et donc par définition ils ne peuvent être décryptés.

C'est d'ailleurs le pb d'avoir des mots de passe hashés. La sécurité est améliorée mais d'un autre côté si un utilisateur oublie son mot de passe on ne pourra pas le lui communiquer; il faudra en récréer un autre.
Je suis tout a fait d'accord.

Dans l'idéal, il faudrait utiliser un algorithme de cryptage dont la(les) clef(s) serait stocké en dehors de l'espace web, voire les définir comme variable d'environnement. Cependant je ne sais pas si PHP permet la deuxième solution.