Tom: Upload / Datensatz einfügen

Beitrag lesen

Hello Bobby,

$query = "INSERT INTO Tabellenname
          SET spaltename='".mysql_real_escape_string(basename($_FILES['userfile']['name']),$con)."'";

$insert = mysql_query($query,$con);

vermutlich wird es besser sein, nur den Basename zu verwenden. Gut allerdings, dass Du an das Escaping gedacht hast. Man sollte aber den Connection-Identifier angeben.

Außerdem ist es zweckmäßig, auch den Erfolg des Inserts zu kontrollieren.
I.d.R. sollte man einen Contraint auf die Spalte mit dem Filenamen haben oder auf eine entsprechend sinnvoll ausgewählte Gruppe von Spalten (Verzeichnis + Name), damit Das File auch unter diesem Namen abspeicherbar ist und keine Doubletten entstehen.

Da sind wir aber schon beim nächsten Problem!
Nicht jeder Dateiname ist auf dem Server zulässig oder zumindest sinnvoll.
Damit es keinen Schmutz gibt (böse User sind überall), sollte man also noch eine transformationsschicht einfügen. Man speichert das File unter einem ausgewüfelten Unique-Name, merkt sich den in der Tabelle, dann kann auch wieder _jeder__irre__Name für das File (Richtung Client) zugelassen werden.

Liebe Grüße

Tom

--
Coming Back soon