Sonderzeichen entfernen und ...

proloser

Erfahrenes Mitglied
Hallo,

ich hab mir einen Dateien-upload geschrieben!

Nun möchte ich gernen ...

damit alle Dateien die auf den Server geladen werden alle sonderzeichen, leerzeichen usw entfernt werden (Nur Buchstaben und Zahlen) damit zB aus ">>Te§t - 100%<<.jpg" -> "tet100.jpg" wird!

- Was brauch ich um das herauszufiltern?
- Muss die Datei zuerst hochgeladen werden und dann mit "rename()" unbennant werden?

MfG proloser
 
Hallo!

Beides ist mit einer regex und preg_match() möglich.

Du zwingst den User, dass er Dateien erst hochladen kann, wenn der Dateiname ausschließlich Buchstaben, Zahlen, einen Punkt und die Endung jpg enthält, andernfalls wird der Upload verboten und eine entsprechende Fehlermeldung geht raus.

Oder Du benennst die Datei um, wenn diese auf dem Server ist. Dabei solltest Du bedenken, dass alles was erst gar nicht auf den Server kommt, auch keinen Schaden anrichten kann. Also besser Möglichkeit 1.

Außerdem gabs hier letztens einen Thread, der die getimagesize() Funktion für die Prüfung, ob die Datei überhaupt eine Grafikdatei ist, empfohlen hat. Ich kann auch BoesenCode in eine Textdatei schreiben und diese dann schoenesBild.jpg nennen.

Also unbedingt ansehen.

Grüße

Martin
 
Ich würde dateien auch immer umbennenen.
Mittels microtime() und md5() kannste dir ja einen neuen, individuellen Dateinamen erzeugen.

Du zwingst den User, dass er Dateien erst hochladen kann, wenn der Dateiname ausschließlich Buchstaben, Zahlen, einen Punkt und die Endung jpg enthält, andernfalls wird der Upload verboten und eine entsprechende Fehlermeldung geht raus.

Is halt nur blöd, wenn man einen User hat, der nicht allzuviel Ahnung hat und deshalb seine Dateien mit Sonderzeichen oder sagen wir zumindest mit nem Leerzeichen benennt. Den würde man auch ausschließen, obwohl er ja keine böse absicht hat.
 
Hallo!

Is halt nur blöd, wenn man einen User hat, der nicht allzuviel Ahnung hat und deshalb seine Dateien mit Sonderzeichen oder sagen wir zumindest mit nem Leerzeichen benennt. Den würde man auch ausschließen, obwohl er ja keine böse absicht hat.

Ausgeschlossen wird er ja nur, wenn er nicht in der Lage ist, (s)eine Datei umzubenennen. Welche Zeichen im Namen erlaubt sind, kann im über eine entsprechende Fehlermeldung mitgeteilt werden.

Grüße

Martin
 
Ich würde dateien auch immer umbennenen.
Mittels microtime() und md5() kannste dir ja einen neuen, individuellen Dateinamen erzeugen.


Deine Idee gefällt mir ganz gut, ich hab es so ähnlich schon versucht ... ein Passwortgenerator genommen und mit dem die Dateinamen zu erstellen nur ist es hin und wieder vorgekommen damit die Kombinition schon vorhanden ist!

Löst du das Problem mit md5() ?
Wenn ja wie?
 
Erst wenn du 16³² Dateien hast, wirst du definitiv ein Problem haben. Denn mehr Kombinationsmöglichkeiten gibt es bei MD5 nicht. Dass es schon vorher zu Kollisionen kommen kann, ist zwar möglich, jedoch recht gering.
 
Jop das Problem hatte ich indemfall weil ich md5() nicht benutzt habe!

PHP:
$zeichen = "abcdefghijklmnopqrstuvwxyz0123456789";
srand ((double)microtime()*1000000);
  
for($var = 0; $var < 5; $var++) {
  $dateiname .= substr($zeichen,(rand()%(strlen ($zeichen))), 1);
}

echo "$dateiname";

Wie funktioniert das jetzt mit md5() ?
 
Zurück