[PHP] Uploadscript, Zufallsname geht nicht

Brian93

Well-known member
30 September 2006
378
21
Hey, ich bin gerade dabei ein kleines Upload Script fertig zu stellen, wollte nun aber noch das die Datei nicht mit dem originalnamen geuppt wird sondern mit
einer Zahlen bzw Buchstabenkombination, ich habe jeztt mal MD5 genommen:
PHP:
$name = md5(time());

im Formular auf der Uploadseite ist die Variable file
HTML:
<input type="file" name="file">

Jetzt zur Seite wo die Action passiert, bei mir upload.php! (EIn Ausschnitt)

PHP:
<?php

$name = md5(time());

// Variabeln festlegen
$max_byte_size = 2000000;
$allowed_types = "(jpg|jpeg|gif|bmp|png|zip|rar|nfo|txt|doc|mp3|m3u|7z|exe|swf|fla|php|html)";

// Formular wurde abgeschickt
if($_POST["submit"] == "Upload") {

// Wurde wirklich eine Datei hochgeladen?
if(is_uploaded_file($_FILES["file"]["tmp_name"])) {

// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
if(preg_match("/." . $allowed_types . "$/i", $_FILES["file"]["name"])) {

// Datei auch nicht zu groß
if($_FILES["file"]["size"] <= $max_byte_size) {

// Alles OK -> Datei kopieren

  



if (move_uploaded_file($_FILES['file']['tmp_name'], "uploads/" . $_FILES['file']['name'])) {

so ich habe schon alles mögliche probiert, und ich weiß nicht was ich falsch mache. Ich hab doch $name mit dem MD5 Code belegt, er gibt aber als Namen immer noch den Originalnamen!

Könnt ihr mir vielleicht helfen?
Ich bin leider noch etwas unerfahren in Sachen PHP :(

Vielen vielen Dankschonmal
 
a) Dein RegExp is falsch. Der Punkt matcht einem beliebigen Zeichen. Du musst ihn escapen, wenn du den echten Punkt meinst.

b) Zum Problem: Du definierst dir deine Variable $name am Anfang, Klasse. Aber wo benutzt du sie denn ? :ugly: Guck mal in der letzten Zeile, welchen Dateinamen du benutzt ;)
 
BTW: md5(time()) ist leicht vorher zu sagen deshalb wird vermutlich eine "Race Condition" möglich sein. Da solltest du dir etwas besseres überlegen.