Perdonami, ma leggendo rapidamente mi pare che tu non abbia la minima idea di quanto stai facendo.
come primissima cosa devi convertire il percorso passato da PHP (il GET per capirci) con il percorso del file fisico all'interno del server.
Hai DUE casi.
Caso "normale", che può variare a seconda che sia Windows o Linux.
Se GET chiede "pippo.jpg", dentro lo script PHP per lo scaricamento devi convertirlo, ad esempio, in "/home/ilmioarchivio/pippo.jpg", oppure "c:\ilmioarchivio\pippo.jpg" (ovviamente i percorsi devono essere quelli giusti!).
Primo passo: manipola GET fino a quando non riesci a far stampare a video il percorso corretto, poi si fa il resto
(altre elaborazioni, in particolare per ritornare il file, ma anche incrementare il contatore).
Qualcosa del genere
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: $mtype");
header("Content-Disposition: attachment; filename=\"$sticaname\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $fsize);
$file = @fopen($file_path,"rb");
if ($file)
{
while(!feof($file))
{
print(fread($file, 1024*8));
flush();
if (connection_status()!=0)
{
@fclose($file);
die();
}
}
@fclose($file);
}
$f = @fopen(LOG_FILE, 'a+');
if ($f)
{
@fputs($f, date("Y.m.d g:ia")." ".$_SERVER['REMOTE_ADDR']." ".$chiave." ".$fname."\n");
@fclose($f);
}
Caso "semplificato", cioè ti limiti a creare la stringa che poi farai tornare al browser.
In questo caso dovrai "manipolare" GET fino a quando non riesci a far stampare a video
http://ilmiobelsito.com/chebelchebel/pippo.jp (cioè URL GIUSTO!)
poi si fa il resto.