¡Advertencia!
Este tema no ha tenido respuestas en más de un mes. Recuerda que si deseas añadir una nueva debes cumplir con las normas de la web.
Estaba aburrido y hize una clase para subir archivos, cualquier duda & pregunta sólo digan.
[php]<?PHP
/*
Autor: Focux
Titulo: File Upload
Version: 0.1

Modo de uso:
$subir = new fileUpload(directorio(dejalo vacio si es en el directorio donde esta el script),tamaño maximo(dejalo vacio y cojera por defecto 1000),array con extensiones permitidas);
$subir->checkFiles() //Esta funcion sube el archivo
$subir->showError(); //Esta funcion muestra el error

Ejemplo:
<?php
if(isset($_POST['ok'])){
require_once('upload.php');
$subir = new fileUpload('algo/','1000',Array("rar","txt"));
$subir->checkFiles();
$subir->showError();
}
?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="subir"/>
<input type="submit" name="ok"/>
</form>

Otros:
Hize todas las variables publicas por si quieren mostrar en algún lugar el tamaño máximo y otras cosas etc.
*/
class fileUpload {
    public $folder; //Creamos las variables
    public $maxSize;
    public $allowedFiles;
    private $error;
    public function __construct($folder = '', $maxSize = "1000", $allowedFiles) { //Agregamos el constructor, en caso de dejar los campos vacío tomara los valores por defecto que se encuentra arriba.
        $this->folder = $folder; //Le damos el valor a cada variable
        $this->maxSize = $maxSize;
        $this->allowedFiles = $allowedFiles;
    }
    public function checkFiles() {
        foreach($_FILES as $some => $result) { //Con este foreach obtenemos el nombre del campo $_FILES
            foreach($_FILES[$some] as $name => $valor) { //Con este foreach extraemos los datos de la superglobal $_FILES
                eval('$this->' . $name . '= \'' . $valor . '\';'); //Los datos obtenidos los guardamos en variables
            }
        }
        if ($this->size > $this->maxSize) { //Verificamos si el peso del archivo supera lo maximo establecido, si lo supera pasamos el error.
            $this->error = 1;
            return false;
        } else {
            if (!in_array(end(explode('.', $this->name)), $this->allowedFiles)) { //Verificamos si la extensión permitida se encuentra en las establecidas.
                $this->error = 2;
                return false;
            } else {
                if (@file_exists($this->folder . sha1_file($this->tmp_name) . time() . $this->name)) { //Verificamos si el archivo existe.
                    $this->error = 3;
                    return false;
                } else {
                    if (!@copy($this->tmp_name, $this->folder . sha1_file($this->tmp_name) . time() . $this->name)) { //Copiamos el archivo al servidor.
                        $this->error = 3;
                        return false;
                    } else {
                        $this->error = 4;
                        return true;
                    }
                }
            }
        }
    }
    public function showError() { //Esta función muestra el error.
        switch ($this->error) { //Con el switch mostramos el error mediante los datos obtenidos anteriormente
            case 1:
                echo 'Tu archivo supera los limites permitidos (' . $this->maxSize . ')';
            break;
            case 2:
                echo "La extensión de tu archivo no es permitida";
            break;
            case 3:
                echo "Hubo un error al subir el archivo, intentelo de nuevo";
            break;
            case 4:
                echo "Archivo subido con exito";
        }
    }
}
?>[/php]


Link de prueba: http://focux.zobyhost.com/uplo.php

¡Soy el fantasma de Habtium! Me dedico a reemplazar aquellas cuentas que han sido eliminadas. 👻
Demasiado interesante Focux, gracias por el aporte. Lo voy a guardar para revisar luego toda la estructura, me servirá de referencia para hacer aplicaciones aplicando POO

¡Soy el fantasma de Habtium! Me dedico a reemplazar aquellas cuentas que han sido eliminadas. 👻
Gracias, cualquier duda sólo preguntar. :pbla:

¡Soy el fantasma de Habtium! Me dedico a reemplazar aquellas cuentas que han sido eliminadas. 👻
Interesante código libre para repasar y a ver si mejoro en mi asignatura pendiente, la programación.

Parece muy bueno, felicitaciones :%:
Oye, tú que usas la programación orientada a objetos, ¿me puedes poner ejemplos en los que  sea bastante útil programar con objetos mejor que normal? Porque yo soy un pesado, y hasta hace dos días no usaba funciones propias porque no las veía sentido. Y me pasa lo mismo con esto, no lo uso porque no le veo la utilidad, que desde luego, la tiene.
Básicamente la programación orientada objeto (POO) se utiliza para reutilizar el código, generalmente las tareas se van repitiendo y hay mucha funcionalidad que se puede reusar si la vas pensando con tiempo y mentalidad de "reuso" para tratar de bajar tus costos de desarrollo.

¡Soy el fantasma de Habtium! Me dedico a reemplazar aquellas cuentas que han sido eliminadas. 👻
La POO es básicamente para reutilización de código. También para que no tengas que hacer copy&paste de muchas funciones durante todo el programa... Y que puedas editar dichas funciones más fácil directamente de la clase...

¡Soy el fantasma de Habtium! Me dedico a reemplazar aquellas cuentas que han sido eliminadas. 👻