Avatar billede engberg Juniormester
11. april 2005 - 16:33 Der er 5 kommentarer og
1 løsning

Upload script - forhindr overskriv

Hejsa

Jeg har brutalt rippet dette script, som jeg tror cyperman er ophavsmand til.

Jeg vil gerne tilføje at hvis filen allerede findes, så skal den rename filen - er der nogen der kan det?

<?PHP

// her gemmes filerne
$konfiguration["upload_bibliotek"] = "./updir/";

// Dette må filerne max fylde. (i kb).
$konfiguration["max_stoerrelse"] = "3000000";

/* Check PHP-version */
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
    // Hvis PHP versionen er for gammel, lukker vi scriptet.
    die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}

/* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */
if($minor < 1) {
    $_FILES = $HTTP_POST_FILES;
    $_POST = $HTTP_POST_VARS;
    $_SERVER = $HTTP_SERVER_VARS;
}

/* Hvor flytter vi fra og til */
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

/* Accepterer vi filens stoerrelse? */
$fil_stoerrelse = filesize($fra)/1024;
if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
    die("Desværre - filen er for stor. Jeg accepterer kun " .
    $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
    ceil($fil_stoerrelse, 1) . " kb");
}

// For at gøre det mere sikkert, kan du selv bestemme hvilket type filer brugerne må uploade
// Dette er smart, da de ellers ville kunne uploade perl script, php script, eller andet der kan skade dig.

$ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));

if($ext == "txt" || $ext == "doc" || $ext == "jpg" || $ext == "bmp") {
    /* Saa koerer vi */
    if(function_exists("move_uploaded_file")) {
        move_uploaded_file($fra, $til);
    } else {
        copy($fra, $til);
    }

    // Filen er nu uploaded, og vi sender dig tilbage til upload siden.
    #header("Location: up3.php");
    echo "<br>Filen fylder ".$fil_stoerrelse." kb og hedder ".$_FILES["upfil"]["name"] ;
    exit;
} else {
    die("Jeg vil kun have jpg, mpg eller swf filer uploaded!");
}
?>
Avatar billede coderdk Praktikant
11. april 2005 - 16:41 #1
/* Hvor flytter vi fra og til */
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

ændres til:


/* Hvor flytter vi fra og til */
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

if ( file_exists( $til ) )
{
  $i = 1;
  while ( file_exists( $konfiguration["upload_bibliotek"] . "/" . $i . "_" . $_FILES["upfil"]["name"] ) )
  {
      $i++;
  }
}

Så bliver den navngivet 1_filnavn eller 123_filnavn hvis der var 122 før den ;)
Avatar billede engberg Juniormester
11. april 2005 - 16:46 #2
Det virker ikke - den giver ingen fejlmeddelser, men det virker ikke...
Avatar billede coderdk Praktikant
11. april 2005 - 16:49 #3
Så må der være et eller andet andet galt, for så vidt jeg kan se er der ikke noget i vejen med koden ;)
Avatar billede coderdk Praktikant
11. april 2005 - 16:50 #4
Aj ok my bad:

ændres til:


/* Hvor flytter vi fra og til */
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

if ( file_exists( $til ) )
{
  $i = 1;
  while ( file_exists( $til = $konfiguration["upload_bibliotek"] . "/" . $i . "_" . $_FILES["upfil"]["name"] ) )
  {
      $i++;
  }
}
Avatar billede engberg Juniormester
11. april 2005 - 16:53 #5
Så virker det - merci!!
Avatar billede coderdk Praktikant
11. april 2005 - 16:54 #6
Så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester