implementé hace tiempo el script proporcionado por Cristalab para forzar descargas en php en mi página web, pero varios usuarios me han comentado que tienen problemas para descargar los ficheros. En concreto usuarios que usan Macs. Lo he probado personalmente en ordenadores con Windows y Ubuntu, varios navegadores (IE, Firefox, Chrome, Safari y Opera), y en estos funcionan sin problemas. Los ficheros si están donde deberían estar, no hay ninguno borrado ni nada, y el fichero descarga.php (que contendría el script) está en la misma carpeta que los ficheros que pueden descargarse.
En concreto, a la gente que usa macs les pasa esto:
"ahora se me descarga un zip, lo abro y me aparece un fichero .cpgz, este fichero lo vuelvo a abrir y me aparece otro fichero .zip, y así hasta el infinito".
Entendería que hubiera problemas según qué navegador estuviera usando el usuario, pero no por el SO.
¿Alguien tiene alguna idea de por qué pasa esto? Ya he mirado el tema por internet, pero no saco nada en claro referente a macs, y por desgracia no tengo uno con el que poder hacer pruebas.
¡Gracias!
P. D.: El código es este. Únicamente añadí unas líneas para que me actualizara el número de descargas de ese archivo en mi BBDD.
Código PHP :
<?php $extensiones = array("zip", "rar", "pdf"); $f = $_GET["id"]; $ftmp = explode(".",$f); //dividimos el id en dos marcando el punto como delimitador $fExt = strtolower($ftmp[count($ftmp)-1]); //guardamos la extensión if(!in_array($fExt,$extensiones)){ die("<b>ERROR!</b> no es posible descargar archivos con la extensión $fExt"); } include ("conectar.php"); //actualizamos el contador de descargas date_default_timezone_set('Europe/Madrid'); $FecHr = date('Y/m/d H:i'); $query = "UPDATE ficheros SET total = total + 1, fecha = '".$FecHr."' WHERE fichero='".$f."'"; header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"$f\"\n"); $fp=fopen("$f", "r"); fpassthru($fp); ?>