Sven Rautenberg: Eingabe von Dateifeld überprüfen

Beitrag lesen

Hi, Ed X!

An dieser Stelle gehst du davon aus, daß der Dateipfad nur einen Punkt enthält, der die Dateiendung trennt. Leider lassen die meisten Systeme, für die es Browser gibt, auch Punkte im Pfadnamen zu, so daß dann die nachfolgende Bedingung nicht mehr zutreffen kann.

Genau das war der sinn, nur habe ich dass nicht weiter erklärt.
Denn somit kann ich ausschließen, dass mehrere punkte im dateinamen
enthalten sind und dann evtl. auf dem server Ärger stiften.

Ich mach' mal ein konkretes Beispiel, damit der geneigte Leser auch was davon hat:

Eine Datei im Linux-Dateisystem kann ohne Probleme in diesem Pfad liegen:
"/home/sven/homepage/v1.0/bilder/titel.de.jpg"

Mit deiner Version wird folgendes in check[1] drinstehen: "0/bilder/titel", check[2] enthält "de", und check[3] enthält "jpg".

Dabei ist das eine ganz reguläre Datei, die ich vielleicht hochladen wollte: Eben eine aus meiner ersten Version der Homepage, eine Titelgrafik des deutschen Titels. Daran ist nichts bösartiges zu erkennen. Mit deinem suboptimalen Test würdest du die Datei nicht als zulässiges JPEG abwehren - und das nur, weil dein Server möglicherweise Probleme mit zuvielen Punkten im Dateinamen hat?

Es ist Aufgabe des Servers, die Datei entgegenzunehmen. Der Dateiname, unter dem sie dort gespeichert wird, ist NICHT vorgeschrieben. Wenn der Server also Probleme mit gewissen Dateinamen hat (weil er z.B. unter MSDOS läuft und nur 8.3-Dateinamen verarbeiten kann), dann hat der Server dafür zu sorgen, daß der Dateiname entsprechend gewandelt wird.

Man könnte die routine noch ausweiten und den user informieren, was da
im argen liegt. Ich könnte =~ s/.*/sollte/ noch auf weitere dinge
prüfen, die ich nicht mag. So da wären alle charCodes die nicht
zwischen 48-57 || 65-90 || 97-122 || 95 liegen. Ein beliebter kandidat ist auch der hier /\s/

Woher soll der User wissen, welches Betriebssystem der Server verwendet, und welche Dateinamenskonventionen dort herrschen? Wenn der User es geschafft hat, irgendwie ungültige Zeichen in den Dateinamen zu bringen, die auf seinem System aber gültig sind, ist es ganz allein Serversache, das für seinen Herrschaftsbereich zu ändern.

Nun ja, kann man auch alles auf dem server testen, aber das ist seine sache. Ich bin nun mal fan von clientseitiger verarbeitung. hat der user
fuer seine rechenleistung gezahlt, soll er sie auch nutzen :)

Wenn du den User zwingst, erstmal einen Dateimanager anzuwerfen, um den Dateinamen (der möglicherweise woanders noch so gebraucht wird) für den Upload extra zu ändern, wird der dir was husten. Ich würde das zumindest tun. Spart aber dann Speicherplatz auf dem Server. <eg>

Bye Ed X

Gute Nacht auch! <blickaufuhr>
 - Sven Rautenberg