Avatar billede dotcom1 Nybegynder
14. april 2005 - 00:01 Der er 13 kommentarer og
1 løsning

Udskrive array

Har dette array, $valid_types, som jeg gerne vil udskrive i die():

$valid_types = array("txt","gif","jpg","png","pdf");
if (!in_array(get_ext($til),$valid_types))
die("Ugyldig filtype. Tilladte filtyper er: ");

Hvordan får jeg udskrevet mit array af tilladte filtyper?

Mvh
Avatar billede hyberpreprocessor Nybegynder
14. april 2005 - 00:07 #1
<?php
$valid_types = array("txt","gif","jpg","png","pdf");
if (!in_array(get_ext($til),$valid_types))
die("Ugyldig filtype. Tilladte filtyper er: ");

for($i=0;$i<count($valid_types);$i++)
{
  echo $valid_types[$i]."<br />\n";
}
?>
Avatar billede hyberpreprocessor Nybegynder
14. april 2005 - 00:08 #2
ah, overså det lige det med die()

<?php
$valid_types = array("txt","gif","jpg","png","pdf");
$types = "";
for($i=0;$i<count($valid_types);$i++)
{
  $types .= $valid_types[$i].",";
}
if (!in_array(get_ext($til),$valid_types))
{
  die("Ugyldig filtype. Tilladte filtyper er: ".$types);
}
?>
Avatar billede barklund Nybegynder
14. april 2005 - 00:10 #3
At bruge join (eller implode) er nok lidt mere overskueligt:

$valid_types = array("txt","gif","jpg","png","pdf");
if (!in_array(get_ext($til), $valid_types)) {
    die("Ugyldig filtype. Tilladte filtyper er: ".join(",", $valid_types));
}

Men derudover kan alle jo komme og kalde en fil for .jpg - uden at det rent faktisk er en sådan. Du bør nok også med getimagesize teste, at den har den rigtige type.
Avatar billede dotcom1 Nybegynder
14. april 2005 - 00:10 #4
Jeg takker og bukker. :) Læg et svar.
Avatar billede dotcom1 Nybegynder
14. april 2005 - 00:11 #5
Så ikke din sidste post. Hvordan bruges getimagesize? Hæver points.
Avatar billede hyberpreprocessor Nybegynder
14. april 2005 - 00:15 #6
hvis det er filupload, så bruge $_FILES['fil']['type']; så får du image/jpeg , og ikke bare en extension.
Avatar billede barklund Nybegynder
14. april 2005 - 00:16 #7
Du kan jo af gode årsager aldrig finde ud af, om en fil er en almindelig tekstfil, så da du tillader txt filer at blive uploadet tillader du i praksis, at hvad som helst kan blive uploadet.
Avatar billede hyberpreprocessor Nybegynder
14. april 2005 - 00:16 #8
.txt = text/plain
.gif = image/gif
.jpg = image/jpeg
.png = image/png
.pdf = application/pdf

Så har du typerne, så er det bare at teste :)
Avatar billede hyberpreprocessor Nybegynder
14. april 2005 - 00:17 #9
barklund

getimagesize til pdf filer ?-)
Avatar billede dotcom1 Nybegynder
14. april 2005 - 00:17 #10
Tak for info. :)
Avatar billede barklund Nybegynder
14. april 2005 - 00:18 #11
Men skal det være sikkert, så er $_FILES['fil']['type'] også sendt af klienten - og hvis jeg i min browser vælger en EXE fil, der hedder fil.jpg, så vil min browser også sende image/jpeg, for min browser tror umiddelbart også, at det er en JPG fil alene udfra endelsen.

Derudover er typen netop sendt af browseren/klienten, kan man sagtens forfalske den.

--
Morten Barklund
Avatar billede barklund Nybegynder
14. april 2005 - 00:19 #12
hyberpreproceser, til at validere tre af typerne, pdf-filen kan valideres med et system-kald til "file" eller via pdf-lib. Men txt filer kan jo aldrig rigtig valideres.
Avatar billede hyberpreprocessor Nybegynder
14. april 2005 - 00:20 #13
"så er $_FILES['fil']['type'] også sendt af klienten"

Viste jeg ikke :] Men så kan man jo bruge http://se2.php.net/manual/en/function.mime-content-type.php
Avatar billede barklund Nybegynder
14. april 2005 - 00:25 #14
Det kan man, og det er nok at rekommandere :)

Og den kigger nemlig på filens faktiske indhold - udfra generelle magic-regler.

Det burde jeg muligvis have nævnt i starten, men tænkte ikke lige på den :)
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