Datei-Lese-Schreibe Problem



  • Hallo zusammen.

    Nach langerer Zeit melde ich mich mal wieder.
    Ich habe eine Exchange in PHP geschrieben, welche sich nun auf 4 verschidene Verzeichnisen und einem Administrationslogin bezieht.

    Ihr könnt es ansehen unter http://www.wolfsoft.ch/exchange.php

    Nur gibt es ein problem. Beim Upload wird die Beschreibung in der $DESC.PHP gespeichert. Klappt auch wunderbar und wird auch angezeigt. Beim Löschen der Datei, wird es auch von der DESC.PHP entfernt.

    Doch beim umbennenn der Datei wird der Name in $desc ['love.wav'] NICHT geändert.
    Standart hochgeladen sieht es so aus :

    $desc['beispiel.txt'] = "Das ist ein Beispieltext";
    

    nun wenn ich die Datei umbennene von beispiel zu umbenannt.txt, steht die umbenannte Datei zwar auch da, aber in der DESC immer noch derselbe text wie oben mit dem Beispiel.

    Was ist hier falsch ?

    Freundliche Grüsse
    Programmer

    CODE der RENAME.PHP (Problemzone mit //PROBLEMZONE START und //ENDE gekennzeichnet):

    <?php
    session_start();
    if(!session_is_registered("c883333am1112929Zy1X833301Oj38409wa92e989012EcHq12"))
    {
    die("Sie haben keine Berechtigung hierfür!");
    }
    else
    {
    switch($_REQUEST['verzeichnis'])
    {
    		case'images':
    		{
    		$filepath = $DOCUMENT_ROOT."/files/images/";
            $path = $DOCUMENT_ROOT."/files/images/";
            $dir = $DOCUMENT_ROOT."files/images/";
            $web_dir = "files/images/";
    		$verz = "images";
            //LOG-PFADE
            $desdir = 'config/description_images.php';
    		$logdir = 'config/_log_images.txt';
    		$desc_path = "config/description_images.php";
    		//EXCHANGE-LINK
    		$ex_lien = '<a href="exchange.php?verzeichnis=images">[Zurück]</a>';
            break;
            }
    
            case 'files':
            {
            $filepath = $DOCUMENT_ROOT."/files/files/";
            $path = $DOCUMENT_ROOT."/files/files/";
            $dir = $DOCUMENT_ROOT."files/files/";
            $web_dir = "files/files/";
    		$verz = "files";
    		        //LOG-PFADE
            $desdir = 'config/description_files.php';
    		$logdir = 'config/_log_files.txt';
    		$desc_path = "config/description_files.php";
    		//EXCHANGE-LINK
    		$ex_lien = '<a href="exchange.php?verzeichnis=files">[Zurück]</a>';
            break;
            }
    
            case 'documents':
            {
            $filepath = $DOCUMENT_ROOT."/files/documents/";
            $path = $DOCUMENT_ROOT."/files/documents/";
            $dir = $DOCUMENT_ROOT."files/documents/";
            $web_dir = "files/documents/";
    		$verz = "documents";
            //LOG-PFADE
            $desdir = 'config/description_documents.php';
    		$logdir = 'config/_log_documents.txt';
    		$desc_path = "config/description_documents.php";
    		//EXCHANGE-LINK
    		$ex_lien = '<a href="exchange.php?verzeichnis=documents">[Zurück]</a>';
            break;
            }
    
            case 'others':
            {
            $filepath = $DOCUMENT_ROOT."/files/others/";
            $path = $DOCUMENT_ROOT."/files/others/";
            $dir = $DOCUMENT_ROOT."files/others/";
            $web_dir = "files/others/";
    		$verz = "others";
            //LOG-PFADE
            $desdir = 'config/description_others.php';
    		$logdir = 'config/_log_others.txt';
    		$desc_path = "config/description_others.php";
    		//EXCHANGE-LINK
    		$ex_lien = '<a href="exchange.php?verzeichnis=others">[Zurück]</a>';
            break;
            }
    
            default:
            {
            //STANDARTPFADE
            $filepath = $DOCUMENT_ROOT."/files/others/";
            $path = $DOCUMENT_ROOT."/files/others/";
            $dir = $DOCUMENT_ROOT."files/others/";
            $web_dir = "files/others/";
    		$verz = "ohters";
            //LOG-PFADE
            $desdir = 'config/description_others.php';
    		$logdir = 'config/_log_others.txt';
    		$desc_path = "config/description_others.php";
    		//EXCHANGE-LINK
    		$ex_lien = '<a href="exchange.php?verzeichnis=others">[Zurück]</a>';
            break;
            }
    }
    
    echo '<img src="images/header_rename.jpg" width="500" heigth="330"><br><br><b>[Datei umbennen]</b><hr>';
    
    //PROBLEMZONE START !!!!! 
    //Die $desdir stimmt! Wenn ich diesen Pfad rausgebe kommt die richtige Datei schon. :) An Dem liegts nich.
    include("$desdir");
     function php_format($string)
     {
      $string = str_replace("\"","\\\\\"",$string);
      $string = str_replace(chr(13),"",$string);
      return $string;
     }
    function write_description($desc)
    {
     @$file = fopen($desc_path,"w");
     @fputs($file,"<?".chr(13)."\n");
     if (is_array($desc)) {
      foreach($desc as $filename => $description) {
       if ($description) @fputs($file," \$desc['$filename'] = \"".php_format($description)."\";".chr(13)."\n");
      }
     }
     @fputs($file,"?>");
     @fclose($file);
    }
    
    if (isset($_REQUEST['file']))
    {
      if (file_exists($filepath.$_REQUEST['file']) &&
      	 (!file_exists($filepath.$_REQUEST['newfile'])) &&
      	 (isset($newfile)))
    {
      	 if (rename($filepath.$_REQUEST['file'],$filepath. $_REQUEST['newfile']))
    	{
    
    	$desc[$_REQUEST['file']] = $_REQUEST['newfile'];
    	write_description($desc);
    	//PROBLEMZONE ENDE!!!!!!
    
      	 			echo "<b>Datei wurde umbenannt!</b><br>";
    
    } else {
      echo "Datei kann nicht umbenannt werden. Leer- und Sonderzeichen nicht gestattet!";
     }
      	 	} else {
      	 	  printf ("<form action=\"%s\" method=\"post\">",$PHP_SELF);
      	 	  printf ("<input type=\"hidden\" name=\"verzeichnis\" value=".$verz.">");
      	 	  printf ("<input type=\"hidden\" name=\"file\" value=\"%s\">", $_REQUEST['file']);
      	 	  printf ("Alter Name: %s<br>",$file);
      	 	  printf ("Neuer Name: <input type=\"text\" name=\"newfile\" value=\"%s\">", $_REQUEST['newfile']);
      	 	  echo ("<br><input type=\"submit\" value=\"Umbenennen\">");
      	 	  echo ("</form>");
      	 	  }
      	 } else {
      	 echo "Keine Datei definiert!";
    }
    	echo $ex_lien;
    	}
    ?>
    

    PS: Ich weiss, is ein bisschen langer Code.. SORRY:..

    kann mir wer helfen?
    Vielen dank!



  • Habe ich da nicht vor einiger Zeit mal mit dran rumgebatelt?! Was genau ist denn das Problem? Taucht der alte und der neue Dateiname mit Beschreibung drin auf, oder wie genau?



  • Hallo flenders!
    *freu, Dich gibts ja auch noch! 😃 *
    Sag ma, haste MSN? Wenn ja kannste mir schreiben... wolfi_ag@hotmail.com

    An der Description haste mir geholfen vor ca. 3 oder 4 Jahren. War lange her..
    Da hatte ich ne PHP-Pause gemacht bis jetzt 🙂 Mittlerweile die ganze wolfsoft-site in PHP (kompaktes Languagesystem usw.) und jo die coole Exchange.

    Das einzige Problem wo ich einfach nicht drauf komme is:

    Wenn ich eine Datei uploade und die Beschreibung angebe, dann steht diese auch immer geschrieben zur jeweiligen Datei.
    Sobald ich die Datei umbenne, dann wird in der description.php nichts geändert, aber der Dateiname wird umbenannt ganz korrekt.

    Und da die Datei nach der rename.php einen neuen Namen hat, stimmt dies mit der Beschreibung nicht mehr überein und die Beschreibung ist auf der anzeige dann eifach leer.

    Des is das Problem 🙂

    lg
    Programmer <-- old name!!
    New, i'm WOLF



  • Mach mal aus dem desc[_REQUEST['file']] = $_REQUEST['newfile']; ganz unten folgendes:

    $desc[$_REQUEST['newfile']] = $desc[$_REQUEST['file']];
    $desc[$_REQUEST['file']] = '';
    

    Und in function write_description($desc) fehlt wohl oben noch folgendes:

    global $desc_path;
    

    Falls es dann immer noch nicht klappt, mach dort mal die @ weg, damit du ggf. die Fehler ausgespuckt bekommst...



  • Hallo flenders

    Das obige hatte ich ja gehabt und dann geändert. OK an dem lags also nicht.

    Es war lediglich die Zeile "global $desc_path;" welche gefehlt hatte. 🙂

    Vielen Dank!

    Grüessli us där Schwiiiz 🙂
    Smile


Anmelden zum Antworten