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