is_uploaded_file

is_uploaded_file -- Diz se o arquivo foi uploaded via HTTP POST

Descrição

bool is_uploaded_file ( string filename)

Retorna TRUE se o arquivo com o nome filename foi uploaded via HTTP POST . Isto é útil para ter certeza que um usuário malicioso , não está tentando confundir o script em trabalhar em arquivos que não deve estar trabalhando -- - por exemplo , / etc / passwd .

Este tipo de confirmação é importante principalmente se existe alguma chance que qualquer coisa feita com os arquivos carregados poderiam revelar o seu conteúdo para o usuário , ou mesmo para outros usuários no mesmo sistema .

is_uploaded_file( ) está disponível somente em versões do PHP 3 depois da 3.0.16 e em versões do PHP 4 posteriores a 4.0.2 . Se você ainda está utilizando uma versão anterior , você pode utilizar o seguinte código para se proteger :

Nota : O exemplo seguinte não funcionará em versões do PHP posteriores a 4.0.2 . Isto depende de uma funcionalidade interna do PHP que mudou depois dessa versão .

 
?php

 
/

 
*

 
Teste

 
de

 
arquivo

 
carregado

 
pelo

 
usuário

 
*

 
/

 
function

 
is_uploaded_file(

 
$filename

 
)

 
{

 
if

 
(!$tmp_file

 
=

 
get_cfg_var('upload_tmp_dir')

 
)

 
{

 
$tmp_file

 
=

 
dirname(tempnam(''

 
,

 
''))

 
;

 
    }

 
$tmp_file

 
.=

 
'

 
/

 
'

 
.

 
basename($filename)

 
;

 
/

 
*

 
Pode

 
haver

 
uma

 
barra

 
no

 
final

 
do

 
php.ini..

 
.

 
*

 
/

 
return

 
(ereg_replace('

 
/

 
+'

 
,

 
'

 
/

 
'

 
,

 
$tmp_file

 
)

 
==

 
$filename)

 
;

 
}

 
/

 
*

 
Utilize

 
isto

 
se

 
por

 
acaso

 
você

 
não

 
tiver

 
*

 
move_uploaded_file(

 
)

 
em

 
versões

 
antigas

 
:

 
*

 
/

 
if

 

(is_uploaded_file($HTTP_POST_FILES['userfile'])

 
)

 
{

 
copy($HTTP_POST_FILES['userfile']

 
,

 
"

 
/

 
place

 
/

 
to

 
/

 
put

 
/

 
uploaded

 
/

 
file")

 
;

 
}

 
else

 
{

 
echo

 
"Possível

 
ataque

 
de

 
carregamento

 
de

 
arquivo

 
:

 
filename

 
'$HTTP_POST_FILES[userfile]'

 
."

 
;

 
}

 
?





Veja também move_uploaded_file( ) e a seção Manipulando upload de arquivos para um exemplo de utilização desta função .