is_readable
is_writable
Filesystem Functions
PHP Manual

# is_uploaded_file

(PHP 4 >= 4.0.3, PHP 5)

is_uploaded_file — Indica si un archivo fue cargado a través de HTTP POST

### Descripción

bool is_uploaded_file ( string `$nombre_archivo` )

Devuelve `TRUE` si el archivo dado por `nombre_archivo` fue cargado a través de HTTP POST. Esto es útil para ayudar a verificar que un usuario malicioso no ha intentado engañar al script haciéndole trabajar sobre archivos con los que no debería trabajar--por ejemplo, /etc/passwd.

Este tipo de chequeo es especialmente importante si existe alguna posibilidad de que cualquier cosa realizada con archivos cargados pueda revelar sus contenidos al usuario, o incluso a otros usuarios en el mismo sistema.

Para que trabaje adecuadamente, la función is_uploaded_file() necesita un argumento como $_FILES['archivo_usuario']['tmp_name'], - el nombre del archivo cargado en la máquina del cliente $_FILES['archivo_usuario']['name'] no funciona.

### Lista de parámetros

`nombre_archivo`

  El nombre de archivo a chequear.

### Valores retornados

Devuelve `TRUE` si todo se llevó a cabo correctamente, `FALSE` en caso de fallo.

### Ejemplos

Example #1 Ejemplo de is_uploaded_file()

`<?php
if (is_uploaded_file($_FILES['archivo_usuario']['tmp_name'])) {
echo "El archivo ". $_FILES['archivo_usuario']['name'] ." fue cargado satisfactoriamente.\n";
echo "Mostrando su contenido\n";
readfile($_FILES['archivo_usuario']['tmp_name']);
} else {
echo "Posible ataque de carga de archivo: ";
echo "nombre de archivo '". $_FILES['archivo_usuario']['tmp_name'] . "'.";
}
?>`

Example #2 Ejemplo de is_uploaded_file() para PHP 4 < 4.0.3

El siguiente ejemplo no trabajará con versiones de PHP 4 superiores a 4.0.2. Depende en la funcionalidad interna de PHP que fue modificada luego de esa versión.

`<?php
/* Prueba de usuario para verificar un archivo cargado. */
function is_uploaded_file_4_0_2($nombre_archivo)
{
if (!$archivo_tmp = get_cfg_var('upload_tmp_dir')) {
$archivo_tmp = dirname(tempnam('', ''));
}
$archivo_tmp .= '/' . basename($nombre_archivo);
/* El usuario puede tener una barra final en php.ini... */
return (ereg_replace('/+', '/', $archivo_tmp) == $nombre_archivo);
}
/* Así es como se usa, ya que tampoco se cuenta con
* move_uploaded_file() en estas versiones antiguas: */
if (is_uploaded_file_4_0_2($HTTP_POST_FILES['archivo_de_usuario'])) {
copy($HTTP_POST_FILES['archivo_de_usuario'], "/lugar/a/colocar/el/archivo/cargado");
} else {
echo "Posible ataque de archivo entrante: nombre de archivo '$HTTP_POST_FILES[archivo_de_usuario]'.";
}
?>`

### Ver también

- move_uploaded_file() - Mueve un archivo cargado a una nueva ubicación
- Gestión de carga de archivos para un ejemplo de uso simple.

is_readable
is_writable
Filesystem Functions
PHP Manual