Renommer un fichier

Résolu/Fermé
PhilippeF - Modifié le 13 mai 2019 à 10:53
jordane45 Messages postés 38290 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2024 - 13 mai 2019 à 13:00
Bonjour,

Dans un fichier "membres.txt" j'ai : "nom; prénom; ; ;"
A la première connexion les membres sont invités à renseigner leur adresse mail et un mot de passe.
lorsque le membre est trouvé dans le fichier "membres.txt" j'écris dans un fichier "memebres1.txt" la ligne suivante : "nom; prénom; mail; mot_de_passe;"
J'obtiens à la fin un fichier "membres1.txt" comme je veux.
Le fichier "membres.txt" est bien supprimé.
Je n'arrive pas à renommer "membres1.txt en membres.txt.

j'ai ce message
"Warning: rename(fr/membres1.txt,fr/membres.txt): in C:\Weblocal\Sites\Jumelage\fr\logging.php on line 83"

mon fichier Logging.php
// je clique sur le bouton "enregistrer"
if (isset($_POST['firstConnect'])){
 if ((empty($nom)) OR (empty($prenom))){  // test si le nom et le prénom du formulaire sont renseignés
   $message1 = "Merci de renseigner votre nom et votre prénom.";
 }
 else if ((empty($message)) AND (empty($message1))){
  $membres = 'fr/membres.txt';
  $temporaire ='fr/membres1.txt';
  $temporairea = fopen($temporaire,'a');
  $lines = file('fr/membres.txt');
  foreach($lines as $n => $line){
   $champ = explode(";",$line);
   $champ0 = $champ[0];
   $champ1 = $champ[1]; 
   // tester $champ1 = $prenom et $champ2 = $nom
   if (($champ[0] == $nom) && ($champ[1] == $prenom)) {
    $newline = $champ0 .";" . $champ1 .';'.$mail.';'.$pass.';';
    $newline = $newline."\r\n";
    fwrite($temporairea,$newline);
    $_SESSION['utilisateur'] = $champ1; //pour affichage sur la page index
   }
   else {
    $newline = $champ[0] .";" . $champ[1] .';'.$champ[2].';'.$champ[3].';';
    $newline = $newline."\r\n";
    fwrite($temporairea,$newline);
   }
  }

  unlink('fr/membres.txt');
  rename('fr/membres1.txt','fr/membres.txt');  
  $message2 = "Vous êtes maintenant connectés.";
 }
}



EDIT : Ajout du langage dans les BALISES DE CODE

Merci d'avance pour votre aide

1 réponse

jordane45 Messages postés 38290 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2024 4 704
13 mai 2019 à 11:11
Bonjour,

Tu as fais un fopen sur le fichier .... il est donc toujours utilisé.
Il faut d'abord le fermer...

Essaye ça
<?php
$directory = 'fr';
$membres =  $directory .'/membres.txt';
$temporaire = $directory .'/membres1.txt';

// je clique sur le bouton "enregistrer"
if (isset($_POST['firstConnect'])){
 if ((empty($nom)) || (empty($prenom))){  // test si le nom et le prénom du formulaire sont renseignés
   $message1 = "Merci de renseigner votre nom et votre prénom.";
 } else if ((empty($message)) && (empty($message1))){
  
  $temporairea = fopen($temporaire,'a');
  $lines = file($membres);
  foreach($lines as $n => $line){
    $champ = explode(";",$line);
    $champ0 = $champ[0];
    $champ1 = $champ[1]; 
    // tester $champ1 = $prenom et $champ2 = $nom
    if (($champ[0] == $nom) && ($champ[1] == $prenom)) {
      $newline = $champ0 .";" . $champ1 .';'.$mail.';'.$pass.';';
      $newline = $newline."\r\n";
      fwrite($temporairea,$newline);
      $_SESSION['utilisateur'] = $champ1; //pour affichage sur la page index
    }else {
      $newline = $champ[0] .";" . $champ[1] .';'.$champ[2].';'.$champ[3].';';
      $newline = $newline."\r\n";
      fwrite($temporairea,$newline);
   }
  }
  fclose($temporairea);
  unlink($membres);
  
  rename($temporaire,$membres);  
  $message2 = "Vous êtes maintenant connectés.";
 }
}



0
Merci Jordan.
J'avais bien essayé fclose($temporaire) mais je n'avais pas fait attention à $temporairea .
encore merci
Me reste à coder le mot de passe!!

Comment je mets "résolu" ?
0
jordane45 Messages postés 38290 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2024 4 704 > PhilippeF
13 mai 2019 à 13:00
0