Hola estoy buscando la manera de poder insertar en pequeño contador de descargas cada vez que se de click en el Link de descarga sin usar un bd mysql solo simple script php.
:D
Encontre este codigo pero no se si esta bueno:
archivo:
<form method="get" action="descargas.php">
<input type="hidden" name="direccion" value="direccion_del_programa.exe">
<input type="submit" value="Bajar Programa.exe">
</form>
descargas.php:
<?
$direc=$_GET['direccion'];
$file=file("contador_".$direc);
if($file[0]!=""){
$numero=$file[0][0]+1;
} else $numero=0;
$fp=fopen("contador_".$direc,"w");
fwrite($fp,$numero);
fclose($fp);
?>
para sber si esta bueno o no, la mejor forma es probarlo. se ve bien el codigo, pero tendrias que poner una parte que redireccione al programa.
Si no programas en PHP, mejor ni le escarbes porque vas a tostear basura.
Lo mas aconsejable es manejar un PHP que disfrace o protega la descarga (jamas sepa la ubicacion). EL proceso es:
Como creas el enlace:
<a href="descargas.php?id=1234">Archivos Bajame</a>
Tomamos en cuenta que id=1234, el 1234 corresponde a una celda de la Base de Datos que se asocia con el archivo.
Dentro del archivo descargar.php
<?php
$consulta= mysql_query(); // consultamos, aqui metemos el ID
if( si_no_tuvo_exito() )
{
header( 'HTTP/1.0 404 Not Found' );
echo "<h1><b>Error:</b> el archivo que has intentado descargar no existe.</h1>";
}
else // si hubo exito
{
$buf= mysql_fetch_array(); // obtenemos
//armamos archivo
$type_file= //ponemos el tipo
$put_file= //ponemos el archivo "dato.doc"
$put_url= //ponemos la URL "/aqui/tengo/elarchivo/"
header( 'Content-Type: '. $type_file);
header( 'Content-Disposition: attachment; filename='. $put_file );
echo file_get_contents( $put_url.$put_file );
unset($tmp);
header( 'Location: ?' );
}
?>
Contador de desgarga solucionado.
<?
//determin la direccion de descarga
$url_descarga="http://url/archivo.zip";
if (is_writeable("contador.txt"))//contador
{
$arrayfichero=file("contador.txt");
$arrayfichero[0]++;
$fichero=fopen("contador.txt","w");
$grabar=fwrite($fichero,$arrayfichero[0]);
$cerrar=fclose($fichero);
}
header("location:$url_descarga");
?>
Creo que sería mejor así, ya que si el archivo no contiene nada saldrá el siguiente error, también sería bueno la verificación del contenido del archivo, por si quizás tiene texto.
PHP Notice: Undefined offset: 0 in /home/shellroot/Escritorio/PoC.php on line 6
if (is_writeable("PoC.txt"))
{
$arrayfichero=file("PoC.txt");
if(empty($arrayfichero[0])){$arrayfichero[0] = 1;}
else{$arrayfichero[0]++;}
$fichero=fopen("PoC.txt","w");
$grabar=fwrite($fichero,$arrayfichero[0]);
$cerrar=fclose($fichero);
}
mmmm ok!