Avatar billede saudoo Nybegynder
19. oktober 2004 - 20:24 Der er 10 kommentarer og
1 løsning

Spærring for bestemte filer i uploadscript.

Hej Exp.

Jeg har følgende kode.

Det er et upload script men folk kan jo sagtens, som det er nu, uploade illegale ting, og derved kommer jeg i klemme.

Derfor ville jeg gerne hvis i kunne hjælpe mig med at sætte en begrænsning. Dvs. at folk ikke kan uploade bestemte filer, eller at de kun kan uploade bestemte filer.

Altså jeg skal have sat en spærring på for f. eks .mp3, eller have så jeg KUN kan sende f. eks. .jpg og .gif

Kan i hjælpe med det?

Jakob

ps. jeg har en anden side, med en simpel SEND form, til at sende filen.

Scriptet: (nej har ikke selv skrevet det. ;)
<?php

$uploadfile = $_FILES['userfile']['tmp_name'];
$uploaddir = "files/".$_FILES['userfile']['name'];

print "<pre>";
if (move_uploaded_file($uploadfile, $uploaddir)) {
 
  print "<p>";
  print "<font face=\"verdana\" size=\"2\">";
  print "Filen er gyldig, og er blevet oploaded. Tak for din fil :D\n";
  print "<font size=\"1\">\n";
  print "<b>Din fil ligger her:</b> http://www.funsense.dk/upload/$uploaddir<p>\n\n\n\n";
  print "<i>Hvis din fil var et billede, kan du se det herunder:</i>\n\n";
  print "<img src=\"http://www.funsense.dk/upload/$uploaddir\">\n\n\n\n\n";
  print "<a href=\"http://www.funsense.dk/\" target=\"_blank\">Service af Funsense.dk</a>";
} else {
  print "Fejl. Muligt angreb!  Her er noget info:\n";
  print_r($_FILES);
}
?>
Avatar billede hmortensen Nybegynder
19. oktober 2004 - 20:30 #1
$oktyper = array("image/jpeg", "image/pjpeg", "image/png", "image/gif");
if (!in_array($_FILES['userfile']['type'], $oktyper)) {
echo "Filtypen er ikke tilladt!";
exit;
}
Avatar billede saudoo Nybegynder
19. oktober 2004 - 20:41 #2
hvis jeg nu ville tillade en txt fil, eller en zip fil.. så skulle den hedde file/zip ?? eller type/zip.. eller?
Ellers virker det.. :D tak..
Avatar billede hmortensen Nybegynder
19. oktober 2004 - 20:52 #3
Mener du er nødt til at have de her 3 på:
application/zip
application/x-zip-compressed
text/plain

Problemet med typen er, at det er browseren der sætter den. Se fx. jpeg, den hedder pjpeg i IE6, og så er man nødt til at have begge med.
Avatar billede saudoo Nybegynder
19. oktober 2004 - 21:13 #4
Ah okay.. så var det derfor.. :) Men tak for hjælpen, lig et svar. :)
Avatar billede saudoo Nybegynder
19. oktober 2004 - 21:57 #5
hov.. :D ups.. du får dem nu.. :) Og igen, tak for hjælpen
Avatar billede olebole Juniormester
19. oktober 2004 - 23:13 #6
<ole>

En rigtig god idé er at checke både mime-type og fil-extension ... problemet er, at hvis man stoler på at browseren sætter typen, får man ørerne i maskinen, når det pludselig ikke er en browser, der uploader.

En ondsindet person - der ved, hvad han gør - vil ikke uploade via en browser, men bruge en applikation, han har mere styr over  ;o)

/mvh
</bole>
Avatar billede hmortensen Nybegynder
19. oktober 2004 - 23:37 #7
Ole, så ville du ha noget i den her retning på ?

$okexts = array("jpeg", "jpg", "png", "gif", "zip", "txt");
if (!in_array(end(explode(".", $_FILES['userfile']['name'])), $okexts)) {
echo "Filtypen er ikke tilladt!";
exit;
}
Avatar billede saudoo Nybegynder
20. oktober 2004 - 18:41 #8
Arr.. med det, siger den at den ikke er tilladt, ligegyldig hvilken fil man sender.. ;)
Avatar billede hmortensen Nybegynder
20. oktober 2004 - 18:48 #9
$okexts = array("jpeg", "jpg", "png", "gif", "zip", "txt");
$arr = explode(".", $_FILES['userfile']['name'])
if (!in_array($arr[count($arr)-1], $okexts)) {
echo "Filtypen er ikke tilladt!";
exit;
}
Avatar billede saudoo Nybegynder
20. oktober 2004 - 21:35 #10
ja det var straks bedre..:) endnu engang tak.. :D
Avatar billede saudoo Nybegynder
20. oktober 2004 - 21:36 #11
dog manglede du en ; på denne linie. :D

$arr = explode(".", $_FILES['userfile']['name'])
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