Además este script es sensitivo a mayúsculas y minúsculas, no es lo mismo flash.swf que Flash.swf, fLaSh.SwF... etc
Pero qué pasa cuando tenemos 100 imagenes en formato jpg, png y gif que querramos que el usuario pueda descagar? Para eso usamos un filtrado de extensión.
La lógica es igual, usar in_array para saber si el archivo a descargar tiene una de las extensiones que hemos marcado como descargables, esto se hace con explode y count, seguramente habrá una forma más eficiente de hacerlo pero no la conozco.
<?php $extensiones = array("jpg", "jpeg", "png", "gif"); $f = $_GET["f"]; if(strpos($f,"/")!==false){ die("No puedes navegar por otros directorios"); } $ftmp = explode(".",$f); $fExt = strtolower($ftmp[count($ftmp)-1]); if(!in_array($fExt,$extensiones)){ die("<b>ERROR!</b> no es posible descargar archivos con la extensión $fExt"); } header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename="$f"n"); $fp=fopen("$f", "r"); fpassthru($fp); ?>
Y con esto la descarga de archivos se hace más fácil y más segura. Espero les haya servido
Usuarios que han visto este tema también han visto...
- Comprobar si existe el dominio del correo en PHP
- El Bucle FOR en PHP. ¿Cómo funciona?
- Imprimiendo el alfabeto en PHP
- Modificación de cadenas en PHP
- Leer archivos Excel desde PHP
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.