Título: ayuda validar caracteres upload Publicado por: kakashi20 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> </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 Título: Re: ayuda validar caracteres upload Publicado por: Gorky 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. Título: Re: ayuda validar caracteres upload Publicado por: kakashi20 en 10 Septiembre 2009, 18:03 pm en ese caso como podria renombrarlo o hacer que si tiene un caracter no lo deje subir..?
Título: Re: ayuda validar caracteres upload Publicado por: naderST 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
Título: Re: ayuda validar caracteres upload Publicado por: WHK 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. |