lamp - mac - Il modo migliore per registrare in modo trasparente i download?
xampp download (3)
Ho un progetto personale che è online da qualche tempo. Ho mantenuto un conteggio dei download in questo modo:
- Quando l'utente fa clic sul collegamento per il download, raggiunge uno script PHP che scrive alcune informazioni in una tabella.
- Una volta scritti i dati, lo script restituisce il percorso del file attuale.
- L'utente ha quindi la possibilità di salvare il file sul proprio disco rigido come se si trattasse di un altro download.
Questo ha funzionato abbastanza bene per un po '; tuttavia, impedisce agli utenti di right-click > save target as...
perché in realtà vedranno semplicemente download.php
nella finestra di dialogo "File Salva ..". Pertanto, l'unico modo per scaricare il progetto è fare clic con il tasto sinistro sul link.
Mi piacerebbe migliorare il processo in modo che un utente possa scaricare il progetto usando qualsiasi metodo con cui lui / lei sia più a suo agio. Quindi, quali sono alcuni modi migliori per registrare in modo trasparente i download senza entrare nel modo di utenti?
Per quello che vale , la macchina è uno stack LAMP standard, quindi nessuna opzione .NET qui.
Configurare Google Analytics? :)
Questo è il motivo per cui molti siti utilizzano un link per il download che ti porterà in un'altra pagina, che avvierà automaticamente un download quando la pagina verrà caricata e fornirà all'utente un link per scaricare direttamente. Principalmente è un modo per ottenere visualizzazioni di pagina per le impressioni degli annunci, ma aiuta anche a tenere traccia di chi sta scaricando i loro file più facilmente.
Questa risposta spiega come utilizzare una pagina di trasferimento per registrare il download e avviare il download del file non appena qualcuno fa clic sul collegamento. L'ho provato di recente per fare clic con il tasto destro.
Sto usando un php middle-man per registrare i download di file. Un URL formattato http://192.168.1.1/xfer.php?file=Li9zb25ncy9HTE9XX0xlYXZlIFlvdXIgSGF0IE9uLm1wMw restituisce il nome del file per entrambi Salva con nome ... e il tasto sinistro del mouse su Firefox.
Ecco il mio xfer.php
<?
$filename = base64_url_decode($_GET['file']);
if ($_GET['file']){
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.str_replace(" ", "_",basename($filename)));
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));
readfile($filename);
}
$fh = fopen("test.html","a");
fwrite($fh,basename($filename)."\n<br />");
fclose($fh);
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_,', '+/='));
}
?>
E la pagina che si collega a xfer.php è
$link = "xfer.php?file=".base64_url_encode("./songs/$key");
con $key
è il nome del file e le songs
sono la cartella in cui sono conservati i nomi dei file.