2017-04-30 12 views
0

Ich habe Code, den ich benutze, um eine Datei mit dem Namen eines Feldes zu erstellen, dann öffne diese Datei und schreibe den Inhalt von einem anderen. Das funktioniert gut.Datei überschreiben, wenn Datei bereits existiert

Wenn Benutzer jedoch versuchen, diese Datei hochzuladen und Informationen zu ändern und zu speichern, werden die Informationen nicht überschrieben.

Wenn ein Benutzer die Datei löscht (was funktioniert), erstellt sie dann unter demselben Namen neu, versucht jedoch, neue Daten einzugeben, erstellt sie die neue Datei (mit demselben Namen wie die alte Datei), behält jedoch die alten Informationen bei und aktualisiert nicht. Ich kann nicht herausfinden, was das verursacht.

Ich war ursprünglich mit file_put_contents und ich habe versucht, verschiedene Parameter für die fopen() zu verwenden, aber es scheint nicht zu funktionieren. Sie können zwar problemlos erstellen und speichern, die Hauptprobleme sind jedoch, dass sie nicht bearbeitet werden können, da Daten nicht überschrieben werden. Sie können die Datei nicht löschen (auch nicht als Workaround) und sie unter demselben Namen erneut erstellen.

Edited hinzufügen: Auch wenn sie versuchen, und Informationen speichern, anstatt die Datei zu öffnen und Überschreiben, erstellt es eine zweite und neue Datei filename.html.html

// Put together the full path of the file we want to create 
$FILENAME = $USER_DIRECTORY.'/'.$_POST['CodeDescription'].'.html'; 
$CODE = $_POST['Code']; 
if(!is_file($FILENAME)): 

    // Open the text file, write the contents, and close it. 
    $fp = fopen($FILENAME, "w+") or die("Couldn't open $FILENAME for 
writing!"); 
    fwrite($fp, $CODE) or die("Couldn't write values to file!"); 
endif; 
header('Location: mywebsite.comsaved=1&file='.$FILENAME); 
} 
?> 
+0

Was sind die Dateiberechtigungen für eine erstellte Datei? – DarkBee

+0

Sie sind derzeit auf diese Erstellungsdateien auf 644 festgelegt. –

+0

Sie müssen Flags für die Datei verwenden Put-Inhalte haben FILE_APPEND siehe Flags Abschnitt http://php.net/manual/en/function.file-put-contents.php –

Antwort

2

Eine schnelle Hack könnte Um dies zu versuchen:

// Put together the full path of the file we want to create 
$FILENAME = $USER_DIRECTORY.'/'.$_POST['CodeDescription'].'.html'; 
$CODE = $_POST['Code']; 

//Delete file if exists. 
if(is_file($FILENAME)) { 
    unlink($FILENAME); 
} 

    // Open the text file, write the contents, and close it. 
    $fp = fopen($FILENAME, "w+") or die("Couldn't open $FILENAME for 
writing!"); 
    fwrite($fp, $CODE) or die("Couldn't write values to file!"); 
header('Location: mywebsite.comsaved=1&file='.$FILENAME); 
} 
Verwandte Themen