22. august 2004 - 17:21
Der er
14 kommentarer og 1 løsning
upload script - test af fil-type
jeg har brug for at test at der kun bliver uploaded filer af typen .jpg eller .jpeg har forsøgt med if( $_FILES["upfile"]["type"] != "image/pjpeg") { die("Desvære - der accepteres kun filer af typen .jpg); }
Annonceindlæg fra Genetec
22. august 2004 - 17:23
#1
Måske: if( $_FILES["upfile"]["type"] != "image/pjpeg" || $_FILES["upfile"]["type"] != "image/jpeg") { die("Desvære - der accepteres kun filer af typen .jpg); }
22. august 2004 - 17:27
#2
Ellers kunne du jo tjekke hvad den sender med: echo $_FILES["upfile"]["type"]; exit;
22. august 2004 - 18:11
#3
echo $_FILES["upfile"]["type"]; udskriver "image/pjpeg" alligevel ryger den ind i if-sætningen: if( $_FILES["upfile"]["type"] != "image/pjpeg" || $_FILES["upfile"]["type"] != "image/jpeg") { die("Desvære - der accepteres kun filer af typen .jpg); }
22. august 2004 - 18:14
#4
Den er også forkert. if( $_FILES["upfile"]["type"] != "image/pjpeg" && $_FILES["upfile"]["type"] != "image/jpeg") Det skal være AND og ikke OR
22. august 2004 - 18:23
#5
Ups, AND ikke OR ;o) Men alligevel pudsigt dit første forsøg ikke virker så.
22. august 2004 - 18:46
#6
Og den sædvanlige advarsel: enhver hacker kan fuske med typen, og f.ex. sende et PHP-script som "image/jpeg". Derved kan han lægge et PHP-script i dit billedkatalog, og få kontrol over dit server/webhotel. Der er flere løsning, og den ene er også at checke extension.
22. august 2004 - 18:53
#7
OKAY, tak det var jeg ikke klar over, hvordan gør man det?
22. august 2004 - 18:53
#8
Men det andet virker nu.
22. august 2004 - 19:01
#9
Hvis det kun er billeder, så kan du bruge getimagesize() - den funktion returnerer et array, hvor du bl.a kan se filtypen (4 element).
http://dk2.php.net/getimagesize
22. august 2004 - 19:12
#10
Desværre ikke nok. Det vil igen være umådelig nemt at lave begyndelsen til en billedfil, og senere har <? ... ?> med PHP i. Man kan gøre det på andre måder, men check fx. extension på den uploadede fil.
22. august 2004 - 19:24
#11
Ah, ja. Det havde jeg ikke tænkt på - så har du ret i at extension-check er bedre.
08. september 2004 - 14:51
#12
Men hvordan, checker jeg extension? $_FILES["upfile"]["name"]
08. september 2004 - 15:17
#13
Fx: $accept = array('.jpg','.jpeg','.png','.gif'); $ext = strrchr($_FILES['upfile']['name'], '.'); if (in_array($ext, $accept)) { // godkendt } else { // ikke godkendt }
08. september 2004 - 15:58
#14
Eller: $path_parts = pathinfo($_FILES['upfile']['name']); $ext = $path_parts["extension"]; $accept = array('jpg','jpeg'); // tilføj selv flere extensions if (in_array($ext, $accept)) { // godkendt } else { // ikke godkendt }
23. februar 2007 - 16:38
#15
lukker
Vi tilbyder markedets bedste kurser inden for webudvikling