Renommer un fichier

Résolu
PhilippeF -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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