elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  ayuda validar caracteres upload
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda validar caracteres upload  (Leído 3,530 veces)
kakashi20


Desconectado Desconectado

Mensajes: 435


Ver Perfil
ayuda validar caracteres upload
« en: 10 Septiembre 2009, 03:20 am »

hola
estoy haciendo una aplicacion a la cual le agregue unos archivos de upload( cargar achivos ) el cual tambien lista los archivos cargados y los forza a descargar...

lista.php

<?php
include("arriba.php");   
$status = "";
 
if ($_POST["action"] == "upload") {
   // obtenemos los datos del archivo
   $tamano = $_FILES["archivo"]['size'];
   $tipo = $_FILES["archivo"]['type'];
   $archivo = $_FILES["archivo"]['name'];
   $prefijo = substr(md5(uniqid(rand())),0,6);
   
   if ($archivo != "") {
      // guardamos el archivo a la carpeta files
      $destino =  "archivos/".$prefijo."_".$archivo;
      if (copy($_FILES['archivo']['tmp_name'],$destino)) {
         $status = "Archivo subido satisfactoriamente: <b>".$archivo."</b>";
      } else {
         $status = "Error al subir el archivo";
      }
   } else {
      $status = "Error al subir archivo";
   }
}
?>


<?php
   echo "".$status;
?>   
<br>
<table height="30" class="texto_titulo" align="center">
<tr>
    <td >Listado de Archivos Subidos </td>
  </tr>
  </table>
   <?php
echo "<table class='texto_tabla' align='center'> ";   
   if ($gestor = opendir('archivos')) {
       while (false !== ($arch = readdir($gestor))) {
         if ($arch != "." && $arch != "..") {
            echo "<tr><td><a href='bajar.php?nom=".$arch."'>".$arch."</a></td>";
            echo "<td>&nbsp;&nbsp;&nbsp;</td>";
            echo"<td><a href='eliminar_archivo.php?nom=".$arch."'>eliminar</a></td> \n ";
         }
       }
       closedir($gestor);
   }
   echo "<br> \n";
   echo "</tr> </table><br>";
   echo"<a href='upload.php>Regresar a Upload</a>";
   ?>
<?php
include("abajo.php");
?>


bajar.php

<?php

$ruta = 'archivos/';//definimos la ruta para las descargas
$error = 'Archivo no disponible para descarga.';
if(isset($_GET['nom']) && basename($_GET['nom']) == $_GET['nom']) {
$getfile=$_GET['nom'];
} else { $getfile = NULL; }
if(!$getfile){ echo $error;
} else {
$filepath = $ruta.'/'.$getfile;
if(file_exists($filepath) && is_readable($filepath)){
$size = filesize($filepath);
header('Content-Type: application/octet-stream');
header('Content-Length: '.$size);
header('Content-Disposition: attachment; filename='.$getfile);
//header('Content-Transfer-Encoding: binary');
$file = @ fopen($filepath,'rb');
if($file) {
fpassthru($file);
exit;
} else { echo $error; }
} else {echo $error;
} }
?>


en lista php listo los archivos cargados pero el problema es que si cargo un archivo con caractes ("·$%$%, etc....) incluyendo la ñ, a la hora de dar click para descargarlos no los descarga..

mi pregunta es:
alguien me podria decir como valido los caracteres para que no tenga problema a la hora de descargarlos....

les agredeceria si me ayudacen.
gracias




En línea

Gorky


Desconectado Desconectado

Mensajes: 770



Ver Perfil WWW
Re: ayuda validar caracteres upload
« Respuesta #1 en: 10 Septiembre 2009, 10:31 am »

Lo mejor seria que renombres los archivos al subirlos.
Lo que puedes hacer es detectar si contiene algun caracter problematico y lo eliminas o lo sustituyes.
Un saludo.


En línea

kakashi20


Desconectado Desconectado

Mensajes: 435


Ver Perfil
Re: ayuda validar caracteres upload
« Respuesta #2 en: 10 Septiembre 2009, 18:03 pm »

en ese caso como podria renombrarlo o hacer que si tiene un caracter no lo deje subir..?
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: ayuda validar caracteres upload
« Respuesta #3 en: 10 Septiembre 2009, 19:31 pm »

haz una función que genere nombres aleatorios con los caracteres de tu preferencia. Algo así:

Código
  1. <?php
  2. function gen_nombre(){
  3. for($i = 1; $i <= 4; $i++){
  4. $nombre = $nombre.chr(rand(97, 122));
  5. }
  6.  
  7. $nombre = strtoupper($nombre);
  8. $nombre = $nombre.rand(100, 999);
  9.  
  10. return $nombre;
  11. }
  12.  
  13. echo gen_nombre();
  14. ?>
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: ayuda validar caracteres upload
« Respuesta #4 en: 12 Septiembre 2009, 18:05 pm »

Hola, veo algunas fallas de programación en tu script, talves te interese darle un ojo a este post:

http://foro.elhacker.net/nivel_web/vulnerabilidad_en_la_subida_de_imagenes-t266003.0.html

sobre los nombres yo creo que bastaría con pasarlos a md5 y tener una base de datos con el nombre real de cada hash como lo hace smf.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda, Validar Ecuacion Lineal
Java
cyberserver 7 7,504 Último mensaje 24 Enero 2011, 06:11 am
por danielo-
ayuda con caracteres « 1 2 »
Programación C/C++
bengy 16 7,496 Último mensaje 4 Septiembre 2012, 06:24 am
por BlackZeroX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines