Visualizzazione risultati 1 fino 14 di 14

Discussione: Contatore download in php che usa file di testo

  1. #1
    Guest

    Unhappy Contatore download in php che usa file di testo

    Ciao a tutti,

    ho scaricato, leggendo i suggerimenti di alcuni utenti sul forum, un contatore di download in php da www.spacemarc.it. Ho provato a vedere il tutorial ma non mi gira...
    Ho uppato i 2 file tramite ftp nel mia root principale.
    In sostanza c'è una cartella denominata count che contiene un file di testo per ciascun file che si vuole far scaricare, in cui viene incrementato il numero di download eseguiti.

    e poi vi è una pagina denominata getfile.php il cui codice ve lo riporto qui (non so come si fa a creare la finestrella in cui scrivete i codici...perdonate, sono un principiantissimo):
    Codice PHP:
    <?php
    //estensione dei file da scaricare
    $ext = ".zip";

    //nome directory con i file di testo, compreso lo slash / finale
    $counterdir = "count/";

    //controllo che nell'url ci sia il nome del file da scaricare,
    if(isset($_GET['name']) && trim($_GET['name'])) {

    //se il file richiesto esiste, avviene il download
    if (file_exists("$_GET[name]$ext")) {

    header("Location: $_GET[name]$ext");

    //apro il file .txt relativo al download richiesto e lo incremento di 1
    $file = @fopen("$counterdir/$_GET[name].txt","r");
    $count = @fread($file, 100);
    $countplus = ($count + 1);
    @
    fclose($file);
    $fileb = @fopen("$counterdir/$_GET[name].txt","w");
    @
    fwrite($fileb, $countplus, 100);
    @
    fclose($fileb);

    //altrimenti, se il file richiesto non esiste, parte l'email di avviso al webmaster e stampo un messaggio di errore
    } else {

    $_GET['name'] = str_replace(">", "&gt;", $_GET['name']);
    $_GET['name'] = str_replace("<", "&lt;", $_GET['name']);

    $today = date("j F Y G:i");
    $user_ip = "$_SERVER[REMOTE_ADDR]";
    $to = "tuaemail@tuosito.xx";
    $subject = "Download non trovato";

    $body = "$user_ip il giorno $today non ha trovato il file $_GET[name]$ext";

    @
    mail("$to","$subject","$body");

    echo
    "Il file $_GET[name]$ext non &egrave; disponibile per il download.<br>
    Riprova pi&ugrave; tardi."
    ;

    }

    //altrimenti, se il nome del file non è passato via get, redirect alla pagina principale
    } else {
    header("Location: index.php");
    }
    ?>
    Premetto che so poco o nulla di php....
    Ora io nel mio sito ho una pagina denominata download.php nella quale voglio mettere dei link che permettano agli utenti di scaricare i file che ho in una cartella denominata areadownload

    sul tutorial c'è scritto di impostare i link (affinchè possano essere scaricati e affinchè il contatore di download si possa aggiornare) in questo modo:

    <a href="getfile.php?<?php echo "name=prova"; ?>">Scarica Prova.zip</a>

    siccome ho i file nella cartella areadownload come dovrei modificare il codice del link affinchè mi punti ai file in quella cartella??
    Perchè impostandolo così come è mi esce la scritta "file non presente e quindi non scaricabile, riprovare più tardi", allora ho pensato di provare a inserire i file da scaricare direttamente nella cartella count insieme ai file di testo per il conteggio per vedere se in questo modo me lo scaricava....ma nulla...stesso messaggio di prima....

    inoltre c'è anche questo comando da inserire sotto il link:

    (download <?php @include("count/prova.txt"); ?>, size <?php
    $dim = @filesize ("prova.zip") / 1024;
    $dim = round($dim);
    echo "$dim KB";
    ?>)

    che permette di visualizzare appunto il numero di download e i KB dei file...ma rimangono sempre uguali a zero....
    La mia pagina in cui provare a vedere è: http://alifex.altervista.org/download2.php

    il file da scaricare dovrebbe essere un file che si chiama leggere.zip, ovviamente ho sostituito in tutti i campi che vi ho precedentemente scritto a "prova.zip" o "prova.txt" "lettere.zip" e "lettere.txt", creando anche il file nella cartella count "lettere.txt" e scrivendovi solo 0 per far partire il contatore.
    Il file lettere.zip stesso attualmente si trova nella cartella count....ma come vedete non permette di scaricarlo...

    C'è qualcuno che mi può aiutare a correggere il codice???

    Ps: scusate se ho scritto tanto ma è solo per spiegare bene eheheh

    Ciauz

    utilizza gli appositi tag per racchiudere il codice, lo visualizzi meglio
    Ultima modifica di seneca : 16-04-2007 alle ore 20.46.31

  2. #2
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    sarò ignorante io.. ma a cosa servono tutte quelle @ ?
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  3. #3
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    Servono per non mostrare gli errori

  4. #4
    Guest

    Predefinito

    Nessuno può darmi una mano??

  5. #5
    Guest

    Predefinito

    L'idea migliore a mio parere potrebbe essere quella dell'apertura di un pop-up ke avvia il download e subito dopo si kiude... e contare così le volte ka la finestra si apre... se l'idea ti garba ti spiego un po' come fare ^^

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da xrudyx
    L'idea migliore a mio parere potrebbe essere quella dell'apertura di un pop-up ke avvia il download e subito dopo si kiude... e contare così le volte ka la finestra si apre... se l'idea ti garba ti spiego un po' come fare ^^
    Certo che mi garba ma la visualizzazione del numero di download e del "size" del file sarebbe possibile mostrarla all'utente prima dell'apertura del popup ad esempio sotto l'immagine e la descrizione del file in questione???
    Comunque se ti va di scrivermi lo script... spiega passo passo come se stessi spiegando a un bambino di 4 anni....così capisco ehehe

  7. #7
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Il file da far scaricare lo devi mettere fuori dalla cartella count.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool
    Il file da far scaricare lo devi mettere fuori dalla cartella count.
    E dove lo devo mettere? Io lo volevo mettere nella cartella "areadownload" ma come devo modificare il richiamo al link:

    Codice PHP:
    <a href="getfile.php?<?php echo "name=lettere"; ?>">Scarica lettere.zip</a><br>(download <?php @include("count/lettere.txt"); ?>, size <?php
    $dim
    = @filesize ("lettere.zip") / 1024;
    $dim = round($dim);
    echo
    "$dim KB";
    ?>)
    per far si che la pagina php getfile.php mi punti alla cartella areadownload e permetta di scaricare il file "lettere.zip"??

    Grazie mille per la risposta

  9. #9
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Per metterlo nella cartella "areadownload" devi modificare lo script in questo modo:
    Codice PHP:
    <?php
    //estensione dei file da scaricare
    $ext = ".zip";

    //nome directory con i file di testo, compreso lo slash / finale
    $counterdir = "count/";

    //controllo che nell'url ci sia il nome del file da scaricare,
    if(isset($_GET['name']) && trim($_GET['name'])) {

    //se il file richiesto esiste, avviene il download
    if (file_exists("areadownload/".$_GET[name].$ext)) {

    header("Location: areadownload/".$_GET[name].$ext);

    //apro il file .txt relativo al download richiesto e lo incremento di 1
    $file = @fopen("$counterdir/$_GET[name].txt","r");
    $count = @fread($file, 100);
    $countplus = ($count + 1);
    @
    fclose($file);
    $fileb = @fopen("$counterdir/$_GET[name].txt","w");
    @
    fwrite($fileb, $countplus, 100);
    @
    fclose($fileb);

    //altrimenti, se il file richiesto non esiste, parte l'email di avviso al webmaster e stampo un messaggio di errore
    } else {

    $_GET['name'] = str_replace(">", "&gt;", $_GET['name']);
    $_GET['name'] = str_replace("<", "&lt;", $_GET['name']);

    $today = date("j F Y G:i");
    $user_ip = "$_SERVER[REMOTE_ADDR]";
    $to = "tuaemail@tuosito.xx";
    $subject = "Download non trovato";

    $body = "$user_ip il giorno $today non ha trovato il file $_GET[name]$ext";

    @
    mail("$to","$subject","$body");

    echo
    "Il file $_GET[name]$ext non &egrave; disponibile per il download.<br>
    Riprova pi&ugrave; tardi."
    ;

    }

    //altrimenti, se il nome del file non è passato via get, redirect alla pagina principale
    } else {
    header("Location: index.php");
    }
    ?>
    E l'altro file in questo modo:
    Codice PHP:
    <a href="getfile.php?<?php echo "name=lettere"; ?>">Scarica lettere.zip</a><br>(download <?php @include("count/lettere.txt"); ?>, size <?php
    $dim
    = @filesize ("areadownload/lettere.zip") / 1024;
    $dim = round($dim);
    echo
    "$dim KB";
    ?>)
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool
    Per metterlo nella cartella "areadownload" devi modificare lo script in questo modo:
    Codice PHP:
    <?php
    //estensione dei file da scaricare
    $ext = ".zip";

    //nome directory con i file di testo, compreso lo slash / finale
    $counterdir = "count/";

    //controllo che nell'url ci sia il nome del file da scaricare,
    if(isset($_GET['name']) && trim($_GET['name'])) {

    //se il file richiesto esiste, avviene il download
    if (file_exists("areadownload/".$_GET[name].$ext)) {

    header("Location: areadownload/".$_GET[name].$ext);

    //apro il file .txt relativo al download richiesto e lo incremento di 1
    $file = @fopen("$counterdir/$_GET[name].txt","r");
    $count = @fread($file, 100);
    $countplus = ($count + 1);
    @
    fclose($file);
    $fileb = @fopen("$counterdir/$_GET[name].txt","w");
    @
    fwrite($fileb, $countplus, 100);
    @
    fclose($fileb);

    //altrimenti, se il file richiesto non esiste, parte l'email di avviso al webmaster e stampo un messaggio di errore
    } else {

    $_GET['name'] = str_replace(">", "&gt;", $_GET['name']);
    $_GET['name'] = str_replace("<", "&lt;", $_GET['name']);

    $today = date("j F Y G:i");
    $user_ip = "$_SERVER[REMOTE_ADDR]";
    $to = "tuaemail@tuosito.xx";
    $subject = "Download non trovato";

    $body = "$user_ip il giorno $today non ha trovato il file $_GET[name]$ext";

    @
    mail("$to","$subject","$body");

    echo
    "Il file $_GET[name]$ext non &egrave; disponibile per il download.<br>
    Riprova pi&ugrave; tardi."
    ;

    }

    //altrimenti, se il nome del file non è passato via get, redirect alla pagina principale
    } else {
    header("Location: index.php");
    }
    ?>
    E l'altro file in questo modo:
    Codice PHP:
    <a href="getfile.php?<?php echo "name=lettere"; ?>">Scarica lettere.zip</a><br>(download <?php @include("count/lettere.txt"); ?>, size <?php
    $dim
    = @filesize ("areadownload/lettere.zip") / 1024;
    $dim = round($dim);
    echo
    "$dim KB";
    ?>)
    Fatto, funziona!!! Grazie mille, sei stato molto gentile. Buona giornata

  11. #11
    Guest

    Predefinito

    Direi ke non serve + una mia risposta vero?!?! Se sei riuscito a far funzionare l'altro script, sei a posto ;)

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da xrudyx
    Direi ke non serve + una mia risposta vero?!?! Se sei riuscito a far funzionare l'altro script, sei a posto ;)
    Si sono riuscito a farlo funzionare grazie al suggerimento di funcool!!!
    Comunque anche l'idea di un pop-up che si apre prima dello scarico non era davvero male...se hai voglia di scrivermi lo script comunque mi fai cosa gradita eheheh se no grazie mille lo stesso sei stato comunque gentile!! Ciauz

  13. #13
    Guest

    Predefinito

    ma questo funziona pure con gli mp3?
    come devo cambiare il codice?

  14. #14
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Funziona allo stesso modo.
    Devi cambiare questa riga:
    Codice PHP:
    $ext = ".zip";
    In questo modo:
    Codice PHP:
    $ext = ".mp3";
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •