Avatar billede saybot Nybegynder
07. juli 2005 - 12:05 Der er 8 kommentarer og
1 løsning

upload script bloker filtyper og stor fil

jeg har lavet mit lille upload script her... dette er selve koden fra siden hvor den har fået filerne fra forms'ne.

det jeg prøver at få til at virke er at begrænse filen til kun at være 1mb og kun uploade gif pjpeg jpeg png bmp

men det virker sq ikke så godt. Nogen der kan se fejlene jeg har lavet?

<?php

$max_size = 1000000;

if (isset($_FILES['file'])) {
// her er min kode some begrænser visse filtyper
if (isset($_FILES(['file']['type']=="image/gif") || ($HTTP_POST_FILES['file']['type']=="image/pjpeg") ||
($HTTP_POST_FILES['file']['type']=="image/bmp") ||
($HTTP_POST_FILES['file']['type']=="image/jpeg") || ($HTTP_POST_FILES['file']['type']=="image/png"))) {

// Folder for upload her.
$dist = "XXXX";
echo"

";
for($i = 0; $i < count($_FILES['file']['name']); $i++) {

// denne skulle så prøve at begrænse filens størrelse
if (isset($_FILES['file']['size'][$i]>$max_size)) {
        echo "for stort\n"; exit; }


if (isset($_FILES['file']['name'][$i]) && $_FILES['file']['name'][$i] !="") {

if(is_uploaded_file($_FILES['file']['tmp_name'][$i])) {

move_uploaded_file($_FILES['file']['tmp_name'][$i], $dist . $_FILES['file']['name'][$i]);
}
else{
    echo"Error";
    }

$type = $_FILES['file']['type'][$i];
$name = $_FILES['file']['name'][$i];
$size = $_FILES['file']['size'][$i];


echo " <p></p><b>Find your image here:</b><br>
        <a href=\"http://XXXX/$name\" target=\"_blank\">XXXX/$name</a><br><br>
        <b>HTML:</b><br>
        &lt;img src=&quot;XXXX/$name&quot;&gt;<br><br>
        <b>BBCode (for forums):</b> <br>
        http://XXXX\\$name <br><br>
          Name: $name<br>
          Type: $type<br>
          Size: $size bytes
          <br><br> <img src=\"http://XXXX/$name\" border=\"0\"><hr>
        ";
   
    }
    }
    echo"
   
    ";
}else{

}
?>
Avatar billede jaw Nybegynder
07. juli 2005 - 12:16 #1
Prøv:

if ($_FILES['file']['size'][$i] > $max_size) {
        echo "for stort\n"; exit; }
Avatar billede saybot Nybegynder
07. juli 2005 - 12:34 #2
det ser ud til at vike jaw :)

så langt så godt, nu mangler jeg bare det med filtyperne
Avatar billede jaw Nybegynder
07. juli 2005 - 12:41 #3
Nu ved jeg ikke lige, hvor mange filer du skal uploade, men hvis det er enkelt så ville jeg gøre således:

$filetypes = array("image/gif", "image/jpeg", "image/pjpeg", "image/png");
if(in_array($_FILES['file']['type'], $filetypes)) {
  //filen er ok
}
Avatar billede saybot Nybegynder
07. juli 2005 - 12:44 #4
der er flere upload forms
Avatar billede jaw Nybegynder
07. juli 2005 - 12:47 #5
Okey, men vi kan jo lave den ligesom dit check for størrelsen, så skal den puttes ind i din for-løkke:

$filetypes = array("image/gif", "image/jpeg", "image/pjpeg", "image/png");
if(!in_array($_FILES['file']['type'][$i], $filetypes)) {
  echo"Filtypen er ikke tilladt";
  exit;
}
Avatar billede saybot Nybegynder
07. juli 2005 - 13:12 #6
jeg siger rigtig rigtig mange tak for hjælpen du :)

jeg har lige en her hvis du kan hjælpe mig med den... kun hvis du lige gider... har bakset lidt med den. Den finder ikke filer der hedder eks. .JPG med stort.

  // Counts how many pictures, which have been found
    while ($files = readdir($dir)){
        if (ereg(".jpg", $files) || ereg(".gif", $files) || ereg(".png", $files) || ereg(".bmp", $files)) {
       
    $total = $total+1;
        }
    }
Avatar billede jaw Nybegynder
07. juli 2005 - 13:15 #7
Tror en løsning vil være, at gøre alle filnavnene til små bogstaver inden du kontrollerer:

while ($files = readdir($dir)){
  $files = strtolower($files);
  if (ereg(".jpg", $files) || ereg(".gif", $files) || ereg(".png", $files) || ereg(".bmp", $files)) {
    $total = $total+1;
  }
}
Avatar billede jaw Nybegynder
07. juli 2005 - 13:15 #8
Og selv tak forresten :)
Avatar billede saybot Nybegynder
07. juli 2005 - 13:22 #9
det kan ikke blive meget bedre... tror næsten der skal gives lidt karma :)
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