Cita:
Iniciado por s3t3r Hola a todos, estoy haciendo una página web con PHP y MySQL, los requisitos del solicitante son: Acceso a panel de administración exclusivo para administrador (creación de usuarios, modificación de noticias, etc.). Acceso a los usuarios (sesiones) a ciertos contenidos como utilidades, foros, etc.
Los requisitos mencionados fueron realizados y se encuentran funcionando pero, un requisito muy específico me tiene estancado, dicho requisito es que los usuarios puedan descargar un solo archivo sin importar tamaño ni extensión cada 24Hs. Esto tampoco sería problemas, con la base de datos se soluciona registrando IDs, fechas, etc., pero además de esto (El problema real) solicitan que, si el usuario comenzó una descarga y por X motivo no finalizo, que dicha descarga no sea registrada dándole al usuario otra oportunidad para realizar su descarga diaria.
Quisiera saber de que modo puedo lograr registrar si las descargas se realizaron correctamente o no, si alguien conoce de ejemplos para esta implementación y pueda darme una mano. Si no conocen o no saben de códigos que puedan lograr esto, por lo menos díganme algún manera aunque sea métodos de programación en otros lenguajes, de algún modo adaptare o hare lo posible para satisfacer este requisito especifico.
Desde ya muchas gracias!!!
A parte de este inconveniente que se me presenta, comparto con ustedes algunos codigos que talvez les sean de utilidad.
Los siguientes codigos estan comprobados en un servidor WAMP.
Con el siguiente codigo se logra enmascarar de algun modo la URL real del archivo a descargar. (No es infalible pero es un cierto grado de seguridad). Las variables que modificaremos son $archivo y $carpeta.
Código PHP:
<?php
$archivo = "imagen.jpg";
$carpeta = "images/";
header("content-disposition: attachment; filename=" . $archivo);
header("content-type: application/octet-stream");
header("content-length: " . filesize($carpeta . $archivo));
header("pragma: no-cache");
header("expires: 0");
$lectura = fopen($carpeta . $archivo,"r");
echo fread($lectura,filesize($carpeta . $archivo));
fclose($lectura);
exit();
?>
el siguiente codigo es para impedir que se realizen pedidos externos, tales como descargas, robot de buscadores (spider o crawler),etc. hacia nuestro dominio/servidor. Esto nos da la seguridad de que solo nuestra pagina sea la que solicite los archivos en nuestro servidor.
Esto codigo lo tenemos que guardar en un archivo llamdo .htaccess dentro de la carpeta donde queremos proteger nuestro archivos, a su vez, hay que habilitar en el archivo httpd.conf el modulo rewrite quitando el simbolo de comentario (#) de la siguiente linea:
LoadModule rewrite_module modules/mod_rewrite.so
Código PHP:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !http://tudominio.com/ [NC]
RewriteRule .(gif|jpg)$ http://tudominio.com/denegado.gif [R,L]