Ankündigung

Einklappen
Keine Ankündigung bisher.

fopen() + array() auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fopen() + array() auslesen

    Hallo,

    ich ändere per Formular den Namen einer Datei.
    Wenn nun ein Dateiname geändert wird, möchte ich dies auch gleichzeitig in der conf.php tun.
    Er soll also die conf.php öffnen, schauen ob der Name im array() existiert und dann ebendfals ändern.
    PHP-Code:
     if(isset($_POST['submit'])) {
         if(
    rename($file$newfile)) {
             
    //
             
    $path "conf.php";
             
    //
             
    if(file_exists($path)) {
                 
    // Datei öffnen
                 
    $fp fopen($path"r+");
                 
    //
                 
    if($fp) {
                     ??
                     ??
                     
    fclose($fp);
                 }
                 else {
                     echo 
    "Datei $path konnte nicht geöffnet werden.";
                 }
             }
             echo 
    "Datei wurde in $newfile umbennant.";
         }
     }

     
    // conf.php
     
    $data = array();
     
    $data['index'] = "index.php";
     .... 
    GN

  • #2
    Klick mich

    Gruß
    phpfan

    Kommentar


    • #3
      hallo,

      ja dnke, aber welche Funktion?

      GN

      Kommentar


      • #4
        Du machst eine PHP-Datei mit fopen() auf? Falscher Ansatz.

        Kommentar


        • #5
          Hallo,

          wie dann? Ich hab es so jetzt.
          Geht aber nicht.

          PHP-Code:
           if(isset($_POST['submit'])) {
               if(
          rename($file$newfile)) {
                   
          //
                   
          echo "Datei wurde in $newfile umbennant.";
                   
          // Datei öffnen
                   
          $path "conf.php";
                   
                   if(
          file_exists($path)) {
                       
          $fp fopen($path"r+");
                       if(
          $fp) {
                           foreach(
          $data as $key => $value) {
                               if(
          $file == $value) {
                                   
          rename($value$newfile);
                               }
                           }
                       }
                       else {
                           echo 
          "$paht konnte nicht geöffnet werden";
                       }
                   }
                   else {
                       echo 
          "$path existiert nicht";
                   }
               }
           }

           
          // conf.php
           
          $data = array();
           
          $data['index'] = "forums.html";
           .... 
          GN

          Kommentar


          • #6
            hallo,

            soll will es auch nicht werden. Hat keiner ne Idee?

            PHP-Code:
                         $fp fopen($path"r+");
                         if(
            $fp) {
                             
            flock($fpLOCK_EX) or die("Datei kann nicht gesperrt werden.");
                             foreach(
            $datasets as $key => $value) {
                                 
            $ergebnis array_search($file$value);
                                 
            rename($datasets[$ergebnis]);
                             }
                         }
                         
            fclose($fp); 
            GN

            Kommentar


            • #7
              Mhm du müsstest erstmal den Datei Inhalt auslesen würde ich sagen. Dann suchst dir die Stelle die den alten Namen enthält, ersetzt ihn und schreibst sie vollkommen neu.

              Leichter wäre es einfach ein Array mittels Serialize in einer anderen Datei abzulegen , Textdatei oder ähnlichen.

              Zum Beispiel :

              PHP-Code:

              <?php
              $content 
              "";
              ...
              //blablabla Datei wurde geändert
              ...
              if(
              file_exists($path)) { 
                           
              $fp fopen($path"r+"); 
                           if(
              $fp) { 
                               while(!
              feof($fp)){
                                    
              $content .= fgets($fp,255);
                               }
                            
              fclose($fp);
                           } 
                           else { 
                               echo 
              "$paht konnte nicht geöffnet werden"
                           }
              }

              // So nun hätten wir schon mal das Array in Stringform in einen String  
              // drinnen dann umwandeln in die alte Array Form. 

              $content unserialize($content);
              for(
              $i=0;$i<count($content);$i++){
                  if(
              key($content) == "index"){
                        
              current($content) = $newfilename;
                   }
                 
              next($content);
              }

              //Nun sollte der Wert vom Array Element mit dem Schlüssel " index " 
              //geändert sein wieder in Form pressen und in die Datei reinschreiben

              $content serialize($content);

              $datei "conf.dat";
              $dt fopen($datei,w);
              fwrite($dt,$content);
              fclose($dt);
              ?>
              Ich denke so könnte es funktionieren. Ist nun ungetestet.
              [/code]

              Kommentar


              • #8
                Hallo

                leider funktioniert das auch nicht so.
                Jetzt habe ich es wie folgt.
                Er schreibt mir auch denn neuen Namen auch in die Datei, löscht aber auch den Rest.
                Er soll aber halt nur den Wert ändern, der Key und so soll stehen bleiben.

                // conf.php
                $data = array();
                $data['index'] = "forums.html";
                ....

                wird
                forums.php
                PHP-Code:
                         $newfile $_POST['newfile'];
                         if(
                rename($file$newfile)) {
                             
                //
                             
                echo "Datei wurde in $newfile umbennant.";

                             
                $path "conf.php";

                             
                $fp fopen($path"r");
                             while(!
                feof($fp)) {
                                 
                $line fgets($fp4096);
                             }
                             
                fclose($fp);

                             
                // neue Datei schreiben
                             
                $fp fopen($path"w");
                             for(
                $i 0$i count($line); $i++) {
                                 
                $fp fwrite($fp$newfile);
                             }
                             
                fclose($fp);
                         } 

                Kommentar

                Lädt...
                X