Manual do PHP
Anterior |  | Próxima

# is_uploaded_file

(PHP 3>= 3.0.17, PHP 4 >= 4.0.3, PHP 5)

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.

Anterior | Principal | Próxima
is_readable | Acima | is_writable