/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Content-type? (forsættelse af tråden "imag~
Fra : Tonni Aagesen


Dato : 20-10-01 00:53

Hejsa NG,

Som jeg forstår det, tillader HTML 4.01, at man sender filer via headeren,
og filtypen kan kontrolleres via content-type?

Hvordan kan jeg sikre mig at den sendte fil er en *.jpg fil? (image/jpeg)?

Jeg har hidtil gjort således:

$img_type = $HTTP_POST_FILES['picture']['type'];
$img_allow_type = "image/jpeg";

if ($img_type != $img_allow_type) {
echo "<p class=\"errMsg\">Forkert filtype</p>";
}

Men for det første returnerer $HTTP_POST_FILES['picture']['type'] i IE
"image/pjpeg" mens den i Opera og NS returnerer "image/jpeg".
For det andet retunerer $HTTP_POST_FILES['picture']['type']; også
$HTTP_POST_FILES['picture']['name'];

altså:

"image/jpeg; name="MichaelFalch_010101.jpg"

Hvis man ikke kan stole på content-type, hvordan kan jeg så kontrollere
hvilke filer der forsøges uploaded?

--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk



 
 
Niels Andersen (20-10-2001)
Kommentar
Fra : Niels Andersen


Dato : 20-10-01 07:53

"Tonni Aagesen" <use.my@signature.com> wrote in message
news:9qqe4q$8f9$1@sunsite.dk...
> Som jeg forstår det, tillader HTML 4.01, at man sender filer via
headeren,

Nej. Filer ligger i bodyen.

> og filtypen kan kontrolleres via content-type?

Angives, ikke kontrolleres. Men husk, det er intet problem at uploade en
gif-fil med navnet "billede.png", og content-typen "image/jpeg". Du kan
altså ikke stole på noget.

> Hvordan kan jeg sikre mig at den sendte fil er en *.jpg fil?
(image/jpeg)?

Ved at kigge på indeholdet af filen. Det er den eneste sikre måde.

> Jeg har hidtil gjort således:

Du kunne fjerne et evt. semikolon, og alt derefter. Og så kan du
godkende på pjpeg og jpeg.

I processen med at kontrollere filtypen ville jeg glemme alt om filnavn,
og (den af klienten angivne) content-type.
Når det er et billede kan du bruge funktionen "getimagesize". Den kigger
nemlig på selve indholdet af filen.

$imginfo = getimagesize($filnavn);
if ($imginfo[2]!=2){
echo "Det er ikke et jpeg-billede!";
return false;
}

--
Mvh.

Niels Andersen



Tonni Aagesen (20-10-2001)
Kommentar
Fra : Tonni Aagesen


Dato : 20-10-01 11:28

"Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
news:fb9A7.4102$YP6.399705@news000.worldonline.dk...

> Nej. Filer ligger i bodyen.

Ok, jeg må ha misforstået noget

> $imginfo = getimagesize($filnavn);
> if ($imginfo[2]!=2){
> echo "Det er ikke et jpeg-billede!";
> return false;
> }

Jeps, det virker som det skal, takker!
Nu prøvede jeg lige med et *.gif billede - her returnerer "$imginfo[2]" 1.
Hvor kan finde noget info, hvor man kan læse sådan noget? Jeg synes ikke,
jeg er stødt på det i manualen??

--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk



Hroi Sigurdsson (20-10-2001)
Kommentar
Fra : Hroi Sigurdsson


Dato : 20-10-01 12:44

Tonni Aagesen wrote:

> Hvor kan finde noget info, hvor man kan læse sådan noget? Jeg synes ikke,
> jeg er stødt på det i manualen??

http://www.php.net/getimagesize

--
Hroi Sigurdsson hroi@asdf.dk
Frank Zappa fan http://www.asdf.dk

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste