Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: WiseHidden en 23 Septiembre 2012, 19:00 pm



Título: Problema al generar Código php para subir archivos a mi FTP
Publicado por: WiseHidden en 23 Septiembre 2012, 19:00 pm
Muy buenas a todos.

Estoy haciendo una mejora en mi web, donde los visitantes pueden subir archivos adjuntos, tal como imagenes, texto, videos, etc....

Puesto que estoy empezando en esto del php he creado dos códigos muy simples que iré mejorando poco a poco el problema es que el "upload.php" se ve perfectamente desde la web de prueba, pero ala hora de enviar el archivo, y se direcciona a SubirF.php (La página se queda en blanco) y no me confirma si se ha podido o no enviar el archivo, otro problema es que en el FTP no sale ningun archivo, ya no se si es debido a que no se ha enviado o a que tengo que crear alguna carpeta aparte.

Os adjunto los dos códigos por si vieran algún fallo pudieran guiarme.


CÓDIGO UPLOAD.PHP

Citar
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prueba Subir Archivo a FTP</title>
</head>
<form method="post" action="subirF.php" enctype="multipart/form-data">
<input name = "archivo" type ="file" />
<br />
<input type = "submit" value="Enviar archivo" />
</form>
<body>
</body>
</html>

CÓDIGO SUBIRF.PHP

Citar
<?php

$nombre_archivo = $_FILES['archivo'] ['name'];
$tipo_archivo = $FILES['archivo'] ['type'];
$tamano_archivo = $_FILES['archivo'] ['size'];
$temp_archivo = $_FILES['archivo'] ['tmp_name'];

if ( strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg") && $tamano_archivo < 1000000 )
move_uploaded_file($temp_archivo), "../Descargas/".$nombre_archivo) )
{
echo "Archivo Subido Correctamente";
}
else (echo "Error al Subir Archivo";}
}
else
echo"Tu archivo no cumple con las restricciones";

?>

Un saludo y gracias

Espero que a cualquier interesado pueda servirle de ayuda también

Atentamente
WH


Título: Re: Problema al generar Código php para subir archivos a mi FTP
Publicado por: WarGhost en 23 Septiembre 2012, 19:09 pm
Lo primero que te diría es que filtraras los ficheros y utilizaras la librería GB, así te evitas que inyecten código en las imágenes.

Respecto al problema supongo que sera por filtrar las extensiones, mejor utiliza strrchr.
Salu2


Título: Re: Problema al generar Código php para subir archivos a mi FTP
Publicado por: WiseHidden en 23 Septiembre 2012, 20:23 pm
Muy buenas WarGhost antes de nada gracias por tu respuesta.
Referente alo de filtrar los ficheros es una gran idea.
Pero ando muy muy pero que muy recien empezado en esto de php. Siempre he trabajado en html (Pero ya sabeis lo limitado que es comparado con el .php)

Mi idea final, seria añadirle las siguientes mejoras, pero soy consciente de que tengo que hacerlo poco a poco.

* Registro de usuario y login (Con un listado de sus ficheros subidos)
* Filtrar y analizar los ficheros
* Crear una url de cada fichero subido para poder compartirlo
* y algunas mejoras más

Pero el primer paso seria solucionar los dos temas que respectan.

¿Como podria filtrar los ficheros y utilizar la libreria GB para evitar que me inyecten el código?
Lo de filtrar las extensiones es mejor quitarlo asi no me limitare a estas extensiones solo, ¿para utilizar strrchr que tendria que sustituirlo por strposm o tendria que dictarle otra función?

Disculpen mi ignorancia.

Un saludo
WH


Título: Re: Problema al generar Código php para subir archivos a mi FTP
Publicado por: WiseHidden en 24 Septiembre 2012, 15:48 pm
He estado probando a resolverlo por mi cuenta, pero ahora estoy aún mas perdido.

Alguien podria orientarme?? Se lo agradeceria enormemente.

Un saludo.

PD: Una vez tenga resuelto todas las dudas, pues ya he empezado a hacer las primeras pruebas con el tema de registro de usuarios y reconomiento del mismo. Haré un pequeño manual paso a paso y explicado de la manera mas sencilla de entender para todo aquel que le pudiera servir de ayuda.

Un saludo a todos
Atentamente
WiseHidden


Título: Re: Problema al generar Código php para subir archivos a mi FTP
Publicado por: EFEX en 24 Septiembre 2012, 22:22 pm
Estas seguro que es la carpeta correcta? move_uploaded_file() no creara la carpeta en caso de que no exista.
Verifica tambien post_max_size en php.ini.

Sobre la seguridad... utilizando la libreria GD, crea una nueva imagen, si esta no puede ser creada quiere decir que no era una imagen gif, jpeg, png, etc. valida.

Código
  1. $nuevaImg = @imagecreatefromjpeg($_FILES['file']['tmp_name']);
  2. if (!$nuevaImg) {
  3.    //La imagen no pudo ser creada por lo tanto
  4.    //no es una imagen jpeg valida
  5. }else{
  6.    // Destruimos la imagen creada, ya no es necesaria
  7.    imagedestroy($nuevaImg);
  8.    //Procedemos a subir el archivo....
  9. }
  10.  



Título: Re: Problema al generar Código php para subir archivos a mi FTP
Publicado por: WiseHidden en 24 Septiembre 2012, 22:39 pm
Muy buenas EFEX.

Citar
Estas seguro que es la carpeta correcta? move_uploaded_file() no creara la carpeta en caso de que no exista.

Pues la verdad no he creado ninguna carpeta lo único que subí al ftp fueron los dos .php (upload.php y subirF.php)

Quizás ahi resida el problema, es lo primero que probaré.

Citar
Verifica tambien post_max_size en php.ini.

Aquí me he perdido :( ¿Como lo verifico?

Citar
Sobre la seguridad... utilizando la libreria GD, crea una nueva imagen, si esta no puede ser creada quiere decir que no era una imagen gif, jpeg, png, etc. valida.

Código

$nuevaImg = @imagecreatefromjpeg($_FILES['file']['tmp_name']);
if (!$nuevaImg) {
    //La imagen no pudo ser creada por lo tanto
    //no es una imagen jpeg valida
}else{
    // Destruimos la imagen creada, ya no es necesaria
    imagedestroy($nuevaImg);
    //Procedemos a subir el archivo....
}
 

Insertaré el código asi quedaría correcto o donde lo incrustaria?:

Citar
<?php

$nombre_archivo = $_FILES['archivo'] ['name'];
$tipo_archivo = $FILES['archivo'] ['type'];
$tamano_archivo = $_FILES['archivo'] ['size'];
$temp_archivo = $_FILES['archivo'] ['tmp_name'];

if ( strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg") && $tamano_archivo < 1000000 )
move_uploaded_file($temp_archivo), "../Descargas/".$nombre_archivo) )
$nuevaImg = @imagecreatefromjpeg($_FILES['file']['tmp_name']);
if (!$nuevaImg) {
    //La imagen no pudo ser creada por lo tanto
    //no es una imagen jpeg valida
}else{
    // Destruimos la imagen creada, ya no es necesaria
    imagedestroy($nuevaImg);
    //Procedemos a subir el archivo...
{
echo "Archivo Subido Correctamente";
}
else (echo "Error al Subir Archivo";}
}
else
echo"Tu archivo no cumple con las restricciones";

?>
?>

Es un mundo nuevo y grande ala vez que interesante esto del .php pero veo que aún no he hecho mas que intentar gatear, me está gustando mucho este lenguaje, tiene tanto potencial.

Mil gracias por toda vuestra orientación, no se que hariamos la gente que quiere aprender sin este increible foro que tanto me ha enseñado.

Un gran saludo a todos camaradas.

WiseHidden. :)