Hello,
Wo wird bei einer Standard-XAMPP-Installation auf Windows eine hochgeladene Datei temporär zwischengespeichert?
in "upload_tmp_dir"
Wenn kein Konfigurationswert eingestellt ist (z.B. in der php.ini oder den Conf-Dateien der Virtuellen Hosts), dann wird das /tmp-Verzeichnis des Servers benutzt.
Jeder virtuelle Host sollte dein eigenes Upload-Verzeichnis bekommen
Wird sie nach Gebrauch durch das PHP-Script gelöscht? Und wo könnte man dieses temporäre Upload-Verzeichnis ändern?
Ja, der Name der Datei wird an das PHP-Script weitergereicht und wenn dieses endet, wird die Datei vom PHP-Runtime wieder beseitigt. Es handelt sich also nicht um eine echte temporäre Datei des Betriebssystems, sondern um eine statische, die aber von PHP kontgrolliert wird.
Hier mein Upload-Script:
<form name="form1" method="post" action="<? $PHP_SELF ?>" enctype="multipart/form-data">
Nimm nicht $PHP_SELF, das ist ohnehin schon überaltert ("Register Globals" ist das Stichwort), sondern nimm $_SERVER['SCRIPT_NAME']. Mit $_SERVER['PHP_SELF'] könnte Dein Formular entführbar werden.
<input name="userfile" type="file" /><br/>
<input name="upload" type="submit" value="upload" />
</form>
<?
echo $_FILES['userfile']['name'];
?>
Der Name, der in ['name'] übermittelt wird, ist derjenoge, den der Client als Namen der Datei auf dem Client mitsendet. Er ist selbstverstänlich fälschbar und birgt, wenn man ihn unkontrolliert übernimmt, ggf. Gefahren. Alles, was vom Client kommt, ist potentiell gefährlich.
Eine Mindestbehandlung des Namens kann man mit der Funktion basedir() vornehmen.
Der Name der "temporären" Datei steht in $_FILES['userfile']['tmp_name'];
Liebe Grüße
Tom vom Berg
Nur selber lernen macht schlau