Avatar billede baitianlong Nybegynder
15. november 2004 - 14:55 Der er 5 kommentarer og
3 løsninger

Check filformat på en smartere måde.

Jeg har dette lille script, som checker at den uploadede fil ikke er "farlig". Men man må kunne skrive det på en lidt smartere måde med f.eks et array med de "farlige" extensions:

elseif(strstr($_FILES['upload_file']['type'], "exe") || strstr($_FILES['upload_file']['type'], "php") || strstr($_FILES['upload_file']['type'], "asp") || strstr($_FILES['upload_file']['type'], "cgi")) {
    print "<script>alert(\"File Format not allowed\");</script>";

Er der een, der kan skrive det lidt bedre ? :)
Avatar billede Slettet bruger
15. november 2004 - 15:03 #1
du kan lave et array med de "ulovlige" filtyper og så checke nogenlunde sådan:

$filetyper = array("exe", "php", "asp", "cgi");
elseif (in_array($_FILES['upfile']['type'], $filetyper)) {
  print "<script>alert(\"File Format not allowed\");</script>";
}


//det er utestet..
Avatar billede baitianlong Nybegynder
15. november 2004 - 15:18 #2
Jeg lavede den sådan her, meget hen ad din ide :)

$badfiles = array("exe", "cgi", "php", "asp");
foreach($badfiles as $badfile) {
    if(strstr($_FILES['upload_file']['type'], $badfile)) {
        $badfilefound = true;
        print "<script>alert(\"File Format not allowed\");</script>";
    }
}

Vi kan evt. dele points'ne, hvis du smider et svar...
Avatar billede baitianlong Nybegynder
15. november 2004 - 15:19 #3
din ville ikke umiddelbart virke da ['type'] på en uploaded file er f.eks:

image/gif

og ikke bare gif. Derfor blive jeg "nødt til" at bruge strstr :)
Avatar billede coderdk Praktikant
15. november 2004 - 15:47 #4
Det der skal du passe på med, check hellere på extension:

$ar = explode( '.', basename( $_FILES['upload_file'] ) );
$ext = $ar[ count( $ar ) - 1 ];
$badtypes = array( 'exe', 'php', 'asp', 'cgi' );
if ( in_array( $ext, $badtypes ) )
{
  print "<script>alert(\"File extension '$ext' not allowed\");</script>";
}
else
{
  // handle upload
}
Avatar billede coderdk Praktikant
15. november 2004 - 15:48 #5
$ar = explode( '.', basename( $_FILES['upload_file'] ) );

skulle naturligvis være

$ar = explode( '.', basename( $_FILES['upload_file']['name'] ) );
Avatar billede baitianlong Nybegynder
15. november 2004 - 15:59 #6
ok, tak for den version også :) Jeg prøver lige at kigge på det... Men bare smid svar, så fordeler jeg :)
Avatar billede coderdk Praktikant
15. november 2004 - 16:06 #7
Yup :)
Avatar billede Slettet bruger
15. november 2004 - 16:41 #8
svar :-)
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