Datei beim Upload umbenennen

Hallo,

ich möchte gerne bei meinem selbstgeschriebenen Blog eine Profilbildfunktion machen. Es funktioniert schon alles bis auf eins, der Upload.

Ich möchte das wenn z.B. ein user mit der UserID “1” die Datei “profilbild.gif” hochlädt diese automatisch in 1.gif umbenannt wird.

Ich hab mir das so vorgestellt:


<?php

$dataname = $_SESSION["uid"];

    if($_FILES['Datei']['tmp_name'])
    {
        move_uploaded_file($_FILES['Datei']['tmp_name'], "upload/".$dataname.$_FILES['Datei']['extension']);
		header ("Location: index.php?page=UserProfile&upload=Erfolgreich");
    }
    else
    {
		header ("Location: index.php?page=UserProfile&upload=Fehler");
    }

?>

Funktioniert aber nicht ganz, die upgeloadete Datei heißt nur “1” ohne Dateiendung. Wo ist der Fehler?

‚extension‘ dürfte nicht existieren. Du müsstest das zuerst aus dem Dateinamen herauslesen, falls ich mich recht entsinne sollte das mit strstr() in verbindung mit „.“ gehen. Och möchte aber darauf hinweisen, dass der Benutzer böse sein kann, du musst auf die Sicherheit achen :slight_smile:

Mfg :wink2:

PS: Die Session musst du zuvor starten, aber du meinst das sicher als theoretisches Beispiel, nicht? :slight_smile:

[quote=“user123”]Wo ist der Fehler?[/quote] Was ist der Fehler?

Ich kann nur spekulieren und da sehe ich für mich innerhalb des Codes, den du zur Verfügung stellst, dass du Session nirgends startest. Das hätte dann zur Folge, dass der Dateiname lediglich aus der Extension besteht.

Edit:

[quote=“Mgier”]‘extension’ dürfte nicht existieren.[/quote] Richtig. Die kann man so nicht einfach abrufen.

lg

Einfacher wäre z.b:

$extension = strrchr($_FILES['bla']['name'], "."); $filename = $userid.$extension;
Die Variable tmp_name enthält nicht den richtigen Namen der Datei.
Und wie schon erwähnt, erstmal die Dateien prüfen, bevor sie einfach auf dem Webspace abgespeichert werden.

Ich würde die Erweiterung einfach “vergessen” und dem Mimetype entsprechend wieder anhängen :wink:
php.net/manual/de/function.finfo-file.php