is_uploaded_file
(PHP 4 >= 4.0.3, PHP 5)
is_uploaded_file — Diz se o arquivo foi enviado por POST HTTP
Descrição
Retorna TRUE se o arquivo com o nome filename foi enviado por POST HTTP. Isto é útil para ter certeza que um usuário malicioso não está tentando levar o script a 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 possa revelar seu conteúdo para o usuário, ou mesmo para outros usuários no mesmo sistema.
Para o funcionamento apropriado, a função is_uploaded_file() precisa de um argumento como $_FILES['userfile']['tmp_name'], - o nome do arquivo enviado na máquina do cliente $_FILES['userfile']['name'] não funciona.
Parâmetros
- filename
-
O nome do arquivo sendo checado.
Valor Retornado
Retorna TRUE em caso de sucesso ou FALSE em falhas.
Exemplos
Example#1 Exemplo de is_uploaded_file()
<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
echo "O arquivo ". $_FILES['userfile']['name'] ." foi enviado com sucesso.\n";
echo "Mostrando o conteúdo\n";
readfile($_FILES['userfile']['tmp_name']);
} else {
echo "PossÃvel ataque de envio de arquivo: ";
echo "nome do arquivo '". $_FILES['userfile']['tmp_name'] . "'.";
}
?>
Example#2 Exemplo de is_uploaded_file() para PHP 4 < 4.0.3
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_4_0_2($filename)
{
if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
$tmp_file = dirname(tempnam('', ''));
}
$tmp_file .= '/' . basename($filename);
/* Podem haver barras sobressalentes no php.ini... */
return (ereg_replace('/+', '/', $tmp_file) == $filename);
}
/* Assim é como utilizá-la, uma vez que você também não tem
* move_uploaded_file() nessas versões mais antigas: */
if (is_uploaded_file_4_0_2($HTTP_POST_FILES['userfile'])) {
copy($HTTP_POST_FILES['userfile'], "/lugar/onde/colocar/arquivo/enviado");
} else {
echo "PossÃvel ataque de envio de arquivo: nome do arquivo '$HTTP_POST_FILES[userfile]'.";
}
?>