is_uploaded_file

is_uploaded_file -- Zegt of een bestandsnaam geupload is via HTTP POST

Beschrijving

bool is_uploaded_file ( string filename)

Geeft TRUE terug als het bestand aangegeven bij filename Geeft TRUE terug als het bestand aangegeven bij filename geupload is via HTTP POST . Dit is handig om te controleren of een kwaadwillige gebruiker niet probeert het script voor de gek te houden door hem te laten werken met bestanden waarmee hij niet behoort te werken , bijvoorbeeld / etc / passwd

Deze controle is zeker van belang als er enige kans is dat iets met het geuploade bestand gedaan wordt dat de inhoud van het bestand prijs kan geven aan de gebruiker , of zelfs aan enige andere gebruiker op het systeem .

is_uploaded_file( ) is alleen beschikbaar vanaf PHP 3.0.16 en PHP 4.0.2 . Als je vast zit aan vroegere versies , dan kan je de volgende functies gebruiken om jezelf te beschermen :

Opmerking : Het volgende voorbeeld werkt niet in PHP 4.0.2 of HOGER . Het is afhankelijk van interne functionaliteiten van PHP die na deze versie veranderd zijn .

 
?php

 
/

 
*

 
Userland

 
test

 
voor

 
geuploade

 
files

 
.

 
*

 
/

 
function

 
is_uploaded_file(

 
$filename

 
)

 
{

 
if

 
(!$tmp_file

 
=

 
get_cfg_var('upload_tmp_dir')

 
)

 
{

 
$tmp_file

 
=

 
dirname(tempnam(''

 
,

 
''))

 
;

 
    }

 
$tmp_file

 
.=

 
'

 
/

 
'

 
.

 
basename($filename)

 
;

 
/

 
*

 
Gebruikt

 
kan

 
slashes

 
aan

 
het

 
eind

 
hebben

 
in

 
php.ini..

 
.

 
*

 
/

 
return

 
(ereg_replace('

 
/

 
+'

 
,

 
'

 
/

 
'

 
,

 
$tmp_file

 
)

 
==

 
$filename)

 
;

 
}

 
/

 
*

 
Dit

 
is

 
hoe

 
je

 
het

 
gebruiken

 
moet

 
,

 
omdat

 
je

 
ook

 
*

 
geen

 
move_uploaded_file(

 
)

 
hebt

 
in

 
deze

 
oudere

 
*

 
versies

 
:

 
*

 
/

 
if

 
(is_uploaded_file($HTTP_POST_FILES['userfile'])

 
)

 
{

 
copy($HTTP_POST_FILES['userfile']

 
,

 
"

 
/

 
place

 
/

 
to

 
/

 
put

 
/

 
uploaded

 
/

 
file")

 
;

 
}

 
else

 
{

 
echo

 
"Mogelijke

 
bestand

 
upload

 
aanval

 
:

 
bestandsnaam

 
'$HTTP_POST_FILES[userfile]'

 
."

 
;

 
}

 
?





Zie ook move_uploaded_file( ) , en de sectie Bestanden uploaden afhandelen voor een simpel voorbeeld .