Subir un fichero y relacionarlo en la base de datos

Iniciado por dimitrix, 16 Mayo 2011, 23:19 PM

0 Miembros y 1 Visitante están viendo este tema.

dimitrix

Vamos a ver, quiero subir un ficho y si se llama imagen.gif que se suba como 'rand().imagen.fig

Cogiendo un código ya creado para ahorrar tiempo, tengo:

El formulario aquí:
Código (html4strict) [Seleccionar]
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1">
  <p align="center">Archivo
   <input name="archivo" type="file" id="archivo">
  </p>
  <p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p>
</form>


En cuanto al PHP que lo guarda:

Código (php) [Seleccionar]
<?
if($boton) {
    if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
      copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
      $subio = true;
    }

if($subio) {
    echo "El archivo subio con exito";
} else {
    echo "El archivo no cumple con las reglas establecidas";
}
die();
}
?>



El problema es que quiero que se guardar en una carpeta llamada 'img' y que tenga lo del nombre aleatorio, pero no se como hacer eso sin estropearlo.

Thanks.




RedZer

#1
checate
formulario para upload imagen
Código (php) [Seleccionar]

<form id="signupform" name="formulario" autocomplete="off" action="insertar.php" method="post" enctype="multipart/form-data">
<input type="file" name="file"  class="required"/>
<input type="submit" name="button" id="button" value="Enviar" />
</form>



pagina que recibe
Código (php) [Seleccionar]


<?php 

                             $clave
=rand(515);
     $destino='img';//nombre de la carpeta
                             
$imagen$_FILES['file']['name'];
                             
$tipo_archivo $_FILES['file']['type'];
                             
$tamano_archivo $_FILES['file']['size'];
                             
$nomimag=$clave.'.jpg';

if (
strpos($tipo_archivo"jpeg") || strpos($tipo_archivo"jpg" ))
        {

  if (
move_uploaded_file($_FILES['file']['tmp_name'],$destino.'/'.$nomimag))
        {
   
//aqui instuccion sql

                               
}

}

 
?>









NOTA:crea una carptea llamda img en done estes guardando tus archivos
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo


~ Yoya ~

Te recomiendo que crees un buen filtro porque te pueden subir una PHP shell.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

RedZer

Cita de: ~ Yoya ~ en 16 Mayo 2011, 23:52 PM
Te recomiendo que crees un buen filtro porque te pueden subir una PHP shell.
con el code que puse??
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

~ Yoya ~

Si compañero, el código es vulnerable.

$_FILES['file']['type'];

Contiene el valor de Contend-Type: y es modificable. Asi que puede ser que estés subiendo un archivo PHP pero le indicas que es un archivo de imagen y lo dejaría subir.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

RedZer

Cita de: ~ Yoya ~ en 17 Mayo 2011, 00:14 AM
Si compañero, el código es vulnerable.

$_FILES['file']['type'];

Contiene el valor de Contend-Type: y es modificable. Asi que puede ser que estés subiendo un archivo PHP pero le indicas que es un archivo de imagen y lo dejaría subir.

:o lo desconocia gracias ~ Yoya ~ tendras un ejemplo a la mano de como seria el filtro ?
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

~ Yoya ~

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

RedZer

Cita de: ~ Yoya ~ en 17 Mayo 2011, 00:22 AM
Puedes leer este POST que lo escribo SH4V:

PHP upload security
realmente desconocia esto. gracias por la info ~ Yoya ~
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo