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
.