Rico: Dateidatum beim Copy (Datei-Upload)

Hallöchen,

... ich mache einen Dateiupload zum Apache (WINNT) nach folgendem Script. Dabei wird jedoch immer das Dateidatum (geändert am ...) neu gesetzt. Kann man das umgehen, sodas das Datum bleibt?

SCRIPT:
?
 if(!empty($file_name)){
  if(copy($file,"$file_name")){
   if(is_uploaded_file($file)){
    echo "<b>Upload beendet!</b><br>";
    echo "Dateiname: $file_name";
    echo "<br>";
    echo "Dateigröße: $file_size Byte";
   }
  }
 }else{
?>
<html>
<head>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" enctype="multipart/form-data" method="post" action="testx.php">
<p>
<input type="file" name="file"><br>
<input type="submit" name="Abschicken" value="Download beginnen"></p>
</form>
</body>
</html>
<?
}
?>

  1. Nein, das File wird doch neu auf dem Server angelegt, also ist es immer das aktuelle Datum.

  2. Hallo Philipp,

    ... ich mache einen Dateiupload zum Apache (WINNT) nach folgendem Script. Dabei wird jedoch immer das Dateidatum (geändert am ...) neu gesetzt. Kann man das umgehen, sodas das Datum bleibt?

    Mit der Funktion

    int touch (string filename, int [time])

    Steht in der PHP Doku, aber ob's unter M$ geht, mußt Du ausprobieren

    if (touch ($DateiName, $IrgendEineZeit)) {
        print "$DateiName Modifizierungs-Zeit wurde auf das aktuelle
              Datum und die aktuelle Uhrzeit gesetzt.";
    } else {
        print "Tut mir leid, Modifikations-Zeit von $DateiName konnte
              nicht geändert werden.";
    }

    CU Christoph

  3. Moin

    ... ich mache einen Dateiupload zum Apache (WINNT) nach folgendem Script. Dabei wird jedoch immer das Dateidatum (geändert am ...) neu gesetzt. Kann man das umgehen, sodas das Datum bleibt?

    Nein, das Originaldatum wird vom Browser normalerweise nicht mit übertragen. Alles was du machen könntest, währe ein Eingabefeld, in das du das Datum vom User eintragen lässt

    if(copy($file,"$file_name")){
       if(is_uploaded_file($file)){

    Böse Falle! Diese beiden Zeilen sind in der falschen Reihenfolge. Das is_uploaded_file() ist eine Sicherheitsfunktion, damit du nicht einfach so beliebige Dateien deren Namen dir der User gibt durch die Gegend kopierst und damit zum Beispiel die Datei mit deinen Passwörtern für den User zugänglich machst. Daher erst überprüfen, und dann kopieren.  Nachdem du /etc/passwd kopiert hast, brauchst du nicht mehr überprüfen ob das auch wirklich eine hochgeladene Datei war, dann ist es schon zu spät :)

    --
    Henryk Plötz
    Grüße aus Berlin