Foros del Web » Programando para Internet » PHP »

Codigo de upload de archivos erroneo

Estas en el tema de Codigo de upload de archivos erroneo en el foro de PHP en Foros del Web. Hola, ¿me pueden decir que hay mal en este codigo que uso una vez que el usuario ha seleccionado un fichero en el campo "file" ...
  #1 (permalink)  
Antiguo 07/09/2007, 12:49
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Codigo de upload de archivos erroneo

Hola, ¿me pueden decir que hay mal en este codigo que uso una vez que el usuario ha seleccionado un fichero en el campo "file" y procesa el formulario?:
Código PHP:
<?php
    
if (isset($_FILES["fichero"]))
    {
        
//Obtenemos datos del archivo
        
$tamano$_FILES["fichero"]["size"];
        
$tipo$_FILES["fichero"]["type"];
        
$nombre$_FILES["fichero"]["name"];
        
$prefijosubstr(md5(uniqid(rand())),0,6);
        
        if (
$nombre!= "")
        {
            if (
$tamano<= 50000000)
            {
                
$destino"../../../~ARCHIVOS/".$prefijo."_".$nombre;
                if (
copy($_FILES["fichero"]["tmp_name"],$destino))
                    
header("location: ../index.php?pagina=subidor&proceso=exitoso&descripcion=Archivo alojado correctamente");
                else
                    
header("location: ../index.php?pagina=subidor&pagina=subidor&proceso=erroneo&descripcion=El archivo no se ha podido alojar correctamente, a causa de fallos tecnicos");
            }
            else
                
header("location: ../index.php?pagina=subidor&pagina=subidor&proceso=erroneo&descripcion=El tamaño del archivo sobrepasa los 50 megabytes");
        }
        else
            
header("location: ../index.php?pagina=subidor&pagina=subidor&proceso=erroneo&descripcion=Selecciona el archivo antes de alojarlo");
    }
?>
Una vez se rompe una condicional, otra vez se rompe otro.. no lo entiendo..

Gracias!
  #2 (permalink)  
Antiguo 07/09/2007, 14:17
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Pregunta Re: Codigo de upload de archivos erroneo

Código PHP:
if ($nombre!= "")
//Este if verfica que el archivo tenga nombre, para verificar que realmente se haya 
//enviado el archivo

if ($tamano<= 50000000)
//Verifica que el tamaño de tu archivo me parece que no sea mayor a 50Mb

if (copy($_FILES["fichero"]["tmp_name"],$destino)) 
//Verifica que tu archivo se haya copiado a la carpeta que hayas definido en el servidor
//de lo contrario te mando a la pagina con el error 
¿Cual seria tu duda en especifico de este problema?

Saludillos.
  #3 (permalink)  
Antiguo 07/09/2007, 14:55
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Codigo de upload de archivos erroneo

Nono lo has entendido mal, el codigo me da error... no esque tenga dudas
  #4 (permalink)  
Antiguo 07/09/2007, 14:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Codigo de upload de archivos erroneo

Que error te da?

Saludos.
  #5 (permalink)  
Antiguo 07/09/2007, 18:06
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Codigo de upload de archivos erroneo

revisa esta linea

$destino= "../../../~ARCHIVOS/".$prefijo."_".$nombre;

se ve sospechosa
  #6 (permalink)  
Antiguo 08/09/2007, 09:34
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Codigo de upload de archivos erroneo

La cosa esque por ejemplo, yo le digo que suba un .jpg y lo hace, que suba un .txt lo hace, un exe lo hace..
pero va bien cuando subo archivos de 1 mb o asi, cuando intento subir algo de 5mb el proceso de copiado devuelve error, y cuando pesa por ejemplo 50mb simplemente se queda en la pagina de procesado (procesar_subidor.php)
¿Tal vez sea cosa del servidor local?
Voy a intentarlo en un servidor y os digo

saludos
  #7 (permalink)  
Antiguo 08/09/2007, 09:43
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Codigo de upload de archivos erroneo

Vale lo comprobe, intente subir un archivo de 5 megas y el proceso de copiado falla (devuelve false en el condicional), en cambio subi un archivo de 500 kb y lo sube correctamente.

¿Que hay mal?, saludos!
  #8 (permalink)  
Antiguo 08/09/2007, 10:44
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Codigo de upload de archivos erroneo

Bueno subi la web:
http://imperiado.farocomercial.com/H...INAS/index.php
Prueven a subir distintos tamaños de archivo y veran

saludos!
  #9 (permalink)  
Antiguo 08/09/2007, 11:11
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Codigo de upload de archivos erroneo

No hay nada malo, sino que son directivas de PHP para evitar ataques a los servidores.
Para cambiarlo, deberías algunas cambiar directivas del php.ini:
- post_max_size
- upload_max_filesize

Si no tienes acceso al php.ini, pero el servidor corre apache y permite .htaccess, podés crear un .htaccess para cambiar estas directivas.
Código PHP:
php_value upload_max_filesize 20M
php_value post_max_size 20M 
No te va a servir ini_set porque el upload se ejecuta antes que tu propio script.
  #10 (permalink)  
Antiguo 08/09/2007, 11:13
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: Codigo de upload de archivos erroneo

Puede ser el php.ini? ;_;

Omg te me adelantaste seppo, creo que la cosa esque en el php.ini esta puesto el maximo tamaño del archivo, lo mirare!

saludos!

EDIT: Hay esta!:
upload_max_filesize = 2M
Ese era el problema, era el php.ini

gracias por vuestra atencion, saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:20.