Foros del Web » Programando para Internet » PHP »

Error en programacion

Estas en el tema de Error en programacion en el foro de PHP en Foros del Web. Buenas Les explico, es parte de una programacion que a parte de no ser mia, no entiendo nada lo que hace, no se mucho de ...
  #1 (permalink)  
Antiguo 02/10/2011, 12:06
 
Fecha de Ingreso: octubre-2011
Mensajes: 44
Antigüedad: 12 años, 7 meses
Puntos: 1
Error en programacion

Buenas

Les explico, es parte de una programacion que a parte de no ser mia, no entiendo nada lo que hace, no se mucho de programacion y no lo doy solucionado.

La cosa es que es de un formulario que al dar a examinar para subir imagenes me sale este codigo, pero siempre que intento subir alguna imagen me dice que "Ya existe un archivo con ese nombre" cuando no existe.

Les copio el codigo de la ventana que se abre para subir el archivo:
Código:
<title>Subir Archivo</title>
<?php
        
        
        
        if(!isset($ruta)) $ruta = "../peliculas"; 
        
        if(isset($_POST['enviar'])) { 
        
                $directorio = $ruta; 
                
                $nombre = $HTTP_POST_FILES['archivo']['name']; 
                                          
                $extensiones = end(explode('.', $_FILES['archivo']['name']));
                $permitidas  = array('gif','jpg','jpe','jpeg','bmp', 'png');
                
                if (in_array($extensiones, $permitidas)) { 
                                                                     
                        if (file_exists($ruta . '/' . $nombre)) {
                                
                                die('Ya existe un archivo con este nombre. <a href="javascript:history.back()">Atrás</a>');
                                
                        } elseif (is_uploaded_file($_FILES['archivo']['tmp_name'])) {
                                
                                                             
                                copy($_FILES['archivo']['tmp_name'], $ruta . '/' . $nombre);
                                
                        }
                        
                } else {
                        
                        die('Extensión no permitida'); 
                        
                }
                
                
                
                $extensiones = explode(".",$HTTP_POST_FILES['archivo']['name']) ;
                $num = count($extensiones) - 1 ;
                if($extensiones[$num] != "gif" && $extensiones[$num] != "jpg" && $extensiones[$num] != "bmp" && $extensiones[$num] != "jpeg" && $extensiones[$num] != "png" && $extensiones[$num] != "zip" && $extensiones[$num] != "rar" && $extensiones[$num] != "swf" && $extensiones[$num] != "exe") { echo"Sólo se permiten imagenes .gif .jpg y .bmp <a href=javascript:history.back(-1)><< atras</a>"; exit ; }
                if(file_exists("$directorio/$nombre")) { 
                echo  "Ya existe un archivo con este nombre. <a href=javascript:history.back(-1)><< atras</a><br>" ; //Te puedes ahorrar el echo y el exit, die() ya lo hace.
                exit;
                }
                if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])){
                copy($HTTP_POST_FILES['archivo']['tmp_name'], "$directorio/$nombre");
                
?>
<br/><br/><div align="center">Archivo subido</div>
<script language="javascript" type="text/javascript">

        opener.formulario.imagen.value = "imagenes/<?php echo $nombre; ?>";
        window.close();
        
</script>
<br />La dirección es: <bR /><br /><center>
  <b>peliculas/<?php echo $nombre; ?></b>
</center><br /><br />

<?php
        } else { 
                echo "Error al subir el archivo - <a href=javascript:history.back(-1)><< atrás</a>";
        }

?>
<? } ?>
<form method="post" enctype="multipart/form-data" action="">
<input type="file" name="archivo" size="20" class="form" /><br/>
<input type="submit" value="Enviar" name="enviar" class="form" />
</form>

Espero que me puedan ayudar, desde ya muchas gracias,
  #2 (permalink)  
Antiguo 02/10/2011, 12:13
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Error en programacion

En teoria, en PHP5 el array $HTTP_POST_FILES no existe (aunq se puede activar), deberías cambiarlo por $_FILES. Cambia esta linea:

Código PHP:
$nombre $HTTP_POST_FILES['archivo']['name']; 
Por esta:
Código PHP:
$nombre $_FILES['archivo']['name']; 
¡Pruebalo! Y nos comentas qué tal :)

Un saludo
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 02/10/2011, 12:16
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Error en programacion

Lo que se me ocurre es que el servidor esta configurado para ya no soportan HTTP_POST_FILES y file_exists retorna TRUE porque la ruta ../peliculas/ si existe (file_exists tambien chequea directorios si le pasas uno).

Cambia $HTTP_POST_FILES por $_FILES y dime que tal te fue.
  #4 (permalink)  
Antiguo 02/10/2011, 12:44
 
Fecha de Ingreso: octubre-2011
Mensajes: 44
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Error en programacion

Buenas

Gracias por las respuestas. Me devuelve el mismo error, cambie todos los $HTTP_POST_FILES POR $_FILES y me da que el nombre de archivo ya existe cuando no es asi, en cuanto a donde se deben subir los archivos, la carpeta peliculas esta vacia asique no puede ser por nada asi.
En cambio cogi y en ve de tener ese archivo en una carpeta distinta la subi al mismo directorio donde esta la carpeta y todo y ahora ya me sube los archivos, pero me devuelve los siguientes dos errores:


Warning: copy(/peliculas/elarboldelavida.jpg) [function.copy]: failed to open stream: No such file or directory in /home/content/67/8418067/html/subir.php on line 26

Warning: copy(/peliculas/elarboldelavida.jpg) [function.copy]: failed to open stream: No such file or directory in /home/content/67/8418067/html/subir.php on line 46

Que corresponden a:

linea 26: copy($_FILES['archivo']['tmp_name'], $ruta . '/' . $nombre);

lina 46: copy($_FILES['archivo']['tmp_name'], "$directorio/$nombre");




Gracias ya de antemano por su ayuda, no sabia lo del php 5... Hacia 5 años que no hacia nada de programacion ni nada parecido y me he quedado muy desafado.


Saludos


CORRIGO, NO ME SUBE LOS ARCHIVOS Y ME DEVUELVE ESOS DOS ERRORES

Última edición por fidofidodido; 02/10/2011 a las 13:03
  #5 (permalink)  
Antiguo 02/10/2011, 13:57
 
Fecha de Ingreso: octubre-2011
Mensajes: 44
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Error en programacion

Les dejo el codigo entero tal y como esta:

Código:
<title>Subir Archivo</title>
<?php
        
        
        
        if(!isset($ruta)) $ruta = "/peliculas"; 
        
        if(isset($_POST['enviar'])) { 
        
                $directorio = $ruta; 
                
                $nombre = $_FILES['archivo']['name']; 
                                          
                $extensiones = end(explode('.', $_FILES['archivo']['name']));
                $permitidas  = array('gif','jpg','jpe','jpeg','bmp', 'png');
                
                if (in_array($extensiones, $permitidas)) { 
                                                                     
                        if (file_exists($ruta . '/' . $nombre)) {
                                
                                die('Ya existe un archivo con este nombre. <a href="javascript:history.back()">Atrás</a>');
                                
                        } elseif (is_uploaded_file($_FILES['archivo']['tmp_name'])) {
                                
                                                             
                                copy($_FILES['archivo']['tmp_name'], $ruta . '/' . $nombre);
                                
                        }
                        
                } else {
                        
                        die('Extensión no permitida'); 
                        
                }
                
                
                
                $extensiones = explode(".",$_FILES['archivo']['name']) ;
                $num = count($extensiones) - 1 ;
                if($extensiones[$num] != "gif" && $extensiones[$num] != "jpg" && $extensiones[$num] != "bmp" && $extensiones[$num] != "jpeg" && $extensiones[$num] != "png" && $extensiones[$num] != "zip" && $extensiones[$num] != "rar" && $extensiones[$num] != "swf" && $extensiones[$num] != "exe") { echo"Sólo se permiten imagenes .gif .jpg y .bmp <a href=javascript:history.back(-1)><< atras</a>"; exit ; }
                if(file_exists("$directorio/$nombre")) { 
                echo  "Ya existe un archivo con este nombre. <a href=javascript:history.back(-1)><< atras</a><br>" ; 
                exit;
                }
                if (is_uploaded_file($_FILES['archivo']['tmp_name'])){
                copy($_FILES['archivo']['tmp_name'], "$ruta/$nombre");
                
?>
<br/><br/><div align="center">Archivo subido</div>
<script language="javascript" type="text/javascript">

        opener.formulario.imagen.value = "/peliculas/<?php echo $nombre; ?>";
        window.close();
        
</script>
<br />La dirección es: <bR /><br /><center>
  <b>peliculas/<?php echo $nombre; ?></b>
</center><br /><br />

<?php
        } else { 
                echo "Error al subir el archivo - <a href=javascript:history.back(-1)><< atrás</a>";
        }

?>
<? } ?>
<form method="post" enctype="multipart/form-data" action="">
<input type="file" name="archivo" size="20" class="form" /><br/>
<input type="submit" value="Enviar" name="enviar" class="form" />
</form>

Los errores:

Warning: copy(/peliculas/elarboldelavida.jpg) [function.copy]: failed to open stream: No such file or directory in /home/content/67/8418067/html/subir.php on line 26

Warning: copy(/peliculas/elarboldelavida.jpg) [function.copy]: failed to open stream: No such file or directory in /home/content/67/8418067/html/subir.php on line 46
  #6 (permalink)  
Antiguo 02/10/2011, 14:01
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Error en programacion

Si te fijas la ruta que llamas es /peliculas
Y tu codigo esta en /home/content/67/8418067/html/

En UNIX "/" es el directorio raíz y si no existe /peliculas entonces obviamente te dará ese error (que es lo que esta ocurriendo).
Si pusiste la carpeta peliculas en el mismo directorio que el archivo subir.php entonces no pongas el "/" en la ruta a subir.
Dejalo solo como "peliculas" en vez de "/peliculas"
  #7 (permalink)  
Antiguo 02/10/2011, 14:08
 
Fecha de Ingreso: octubre-2011
Mensajes: 44
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Error en programacion

Cita:
Iniciado por Ronruby Ver Mensaje
Si te fijas la ruta que llamas es /peliculas
Y tu codigo esta en /home/content/67/8418067/html/

En UNIX "/" es el directorio raíz y si no existe /peliculas entonces obviamente te dará ese error (que es lo que esta ocurriendo).
Si pusiste la carpeta peliculas en el mismo directorio que el archivo subir.php entonces no pongas el "/" en la ruta a subir.
Dejalo solo como "peliculas" en vez de "/peliculas"
Gracias, Ciertamente asi funciona, sube el archivo, solo que por alguna razon me pone "Ya existe un archivo con ese nombre" aunque bueno, es una gran avance, muchisimas gracias.
  #8 (permalink)  
Antiguo 03/10/2011, 08:09
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Error en programacion

¿Esto de aqui?
Código PHP:
$extensiones explode(".",$_FILES['archivo']['name']) ;
                
$num count($extensiones) - ;
                if(
$extensiones[$num] != "gif" && $extensiones[$num] != "jpg" && $extensiones[$num] != "bmp" && $extensiones[$num] != "jpeg" && $extensiones[$num] != "png" && $extensiones[$num] != "zip" && $extensiones[$num] != "rar" && $extensiones[$num] != "swf" && $extensiones[$num] != "exe") { echo"Sólo se permiten imagenes .gif .jpg y .bmp <a href=javascript:history.back(-1)><< atras</a>"; exit ; }
                if(
file_exists("$directorio/$nombre")) { 
                echo  
"Ya existe un archivo con este nombre. <a href=javascript:history.back(-1)><< atras</a><br>" 
¿Estás volviendo a comprobar si la extensión es valida? ¿Si el archivo existe? ¡Claro que existe! Ya está subido, y movido o.o

Supongo q por eso te da ese error ;)
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: imagenes, programacion
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 16:50.