Casa / Tutorial Windows / Crea un contatore di download di file utilizzando PHP e MySQL. Installazione del contatore di download: una panoramica dei plug-in per WordPress Contatore dei file selezionati

Crea un contatore di download di file utilizzando PHP e MySQL. Installazione del contatore di download: una panoramica dei plug-in per WordPress Contatore dei file selezionati

Per molto tempo non ci sono state lezioni su PHP e MySQL. Oggi creeremo un contatore di download semplice ma efficace.

Ogni file avrà una voce nella riga della tabella del database. La stessa tabella memorizzerà il numero di download di file. PHP aggiornerà il database MySQL e reindirizzare l'utente al file richiesto.

Per tenere traccia del numero di download di qualsiasi file, è necessario inserirlo in una cartella File e utilizzare un URL speciale per accedervi.

Passo 1 - XHTML

Il primo passo è creare il markup per il nostro script. È molto semplice - abbiamo gestore di file div, che contiene una lista non ordinata in cui ogni elemento della lista è responsabile di un file.

I file di cui si desidera tenere traccia dei download vengono inseriti nella cartella File nella cartella principale dello script. PHP quindi itera attraverso tutti i file e aggiunge ciascuno di essi come elemento di elenco ( li ) in un elenco non ordinato.

demo.php


  • servizio fotografico-1.0.zip 0 Scarica

Si noti che l'attributo href links passa il nome del file come parametro a scarica.php. È qui che entra in gioco il monitoraggio dei download.

Non devi visualizzare tutto allo stesso modo: puoi semplicemente collegarti a scarica.php sulle tue pagine e tutti i download non passeranno.

Passo 2 - css

Dopo il markup, passiamo al design. css si applicano le regole seguenti gestore di file div con id (simbolo #), poiché ricorre solo 1 volta nella pagina e al resto degli elementi per nome di classe.

styles.css

#file-manager( background-color:#EEE; border:1px solid #DDD; margin:50px auto; padding:10px; width:400px; )
ul.manager li( sfondo:url("img/bg_gradient.gif") ripeti-x centro in basso #F5F5F5; bordo:1px solido #DDD; bordo-colore-alto:#FFF; stile elenco:nessuno; posizione:relativo ; ) ul.manager li a( display:block; padding:8px; ) ul.manager li a:hover .download-label( /* Al passaggio del mouse, mostra il testo verde per il download: */ display:block; ) span. download- label( background-color:#64B126; border:1px solid #4E9416; color:white; display:none; font-size:10px; padding:2px 4px; position:absolute; right:8px; text-decoration:none ; text -shadow:0 0 1px #315D0D; top:6px; /* Angoli arrotondati CSS3 */
-moz-border-radius:3px; -webkit-border-radius:3px; bordo-raggio:3px; ) span.download-count( color:#999; font-size:10px; padding:3px 5px; position:absolute; text-decoration:none; )

Passaggio 3 -PHP

Come ho detto prima, PHP cerca i file nella cartella dei file ed elenca ogni file come voce di elenco in un elenco non ordinato. Diamo un'occhiata a come va

demo.php- parte in alto

// Coo errori di segnalazione: error_reporting(E_ALL^E_NOTICE); // : richiede "connect.php"; $estensione=""; $array_file = matrice(); /* Apri la cartella e passa attraverso tutti i file: */ $dir_handle = @opendir($directory) o die("C'è un errore con la tua directory di file!"); while ($file = readdir($dir_handle)) ( /* saltando file di sistema : */ if($file(0)==".") continua; /* fine() restituisce l'ultimo elemento dell'array generato dalla funzione esplodi(): */ $extension = strtolower(end(explode(".",$file))); /* Salta i file php : */ if($extension == "php") continue; $files_array=$file; ) /* Ordina i file in ordine alfabetico*/ sort($files_array,SORT_STRING); $file_download=array(); $result = mysql_query("SELECT * FROM download_manager"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* Chiave array $file_downloads sarà il nome del file, e conterrà il numero di download: */ $file_downloads[$row["nomefile"]]=$row["downloads"]; )

Nota come selezioniamo tutte le righe dalla tabella download_manager con mysql_query() e successivamente le aggiungiamo all'array $file_downloads con il nome del file come chiave per il numero di download. Quindi, più avanti nel codice, possiamo scrivere $file_downloads["archive.zip"] e stampare il numero di download.

Di seguito puoi vedere il codice che genera gli elementi della lista:

demo.php- Parte di mezzo

Foreach($files_array as $key=>$val) ( echo "

  • ".$val." ".(int)$file_download[$val]." Scarica
  • "; }

    Tutto viene fatto semplicemente con un ciclo foreach dell'array $files_array. Successivamente, tutto viene emesso utilizzando echo.

    Ora diamo un'occhiata più da vicino a come funziona il tracciamento dei file.

    scarica.php

    // Controllo degli errori: error_reporting(E_ALL^E_NOTICE); // Abilita il file di connessione db: require("connect.php"); if(!$_GET["file"]) error("Parametro mancante!"); if($_GET["file"](0)==".") error("File errato!"); if(file_esiste($directory."/".$_GET["file"])) ( /* If e il visitatore non è un bot di ricerca, contare i download: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filename="".mysql_real_escape_string($_GET["file"])."" ON DUPLICATE KEY UPDATE downloads=downloads+1"); header("Posizione: ".$directory."/".$_GET["file"]); Uscita; ) else error("Questo file non esiste!"); /* aiutanti di funzione: */ funzione errore($str) ( die($str); ) funzione is_bot() ( /* Questa funzione di controllo sul robot*/ $botlist = array("Teoma", "alexa", "froogle", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory", "Ask Jeeves", "TECNOSEEK ", "InfoSeek", "WebFindBot", "girafabot", "crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp", "msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz", "Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot", "Mediapartners-Google", "Sogou web spider", "WebAlta Crawler" ,"TweetmemeBot", "Butterfly", "Twitturls", "Me.dium", "Twiceler"); foreach($botlist as $bot) ( if(strpos($_SERVER["HTTP_USER_AGENT"],$bot)!==false) return true; // Is a bot ) return false; // Non un bot)

    È importante verificare se il tuo visitatore è un essere umano o un robot dei motori di ricerca. I robot sono simpatici, ma non lasciamo che distorcano le nostre statistiche. Ecco perché la riga nel database viene aggiornata solo dopo il controllo is_bot().

    Passaggio 4 -MySQL

    Come abbiamo notato nell'ultimo passaggio, il numero di download è memorizzato come riga nella tabella download_manager. Innanzitutto, spieghiamo come funziona questa query:

    scarica.php

    INSERT INTO download_manager SET filename="filename.doc" ON DUPLICATE KEY UPDATE downloads=downloads+1

    Indica a MySQL di inserire una nuova riga nella tabella download_manager e di impostare il campo della riga del nome file sul valore del file richiesto per il download. Tuttavia, il campo del nome file indicato come indice univoco sul tavolo. Ciò significa che ogni riga può essere inserita solo una volta, altrimenti si verificherà un errore di chiave duplicata.

    Qui è dove funzionerà la seconda parte della query: ON DUPLICATE KEY UPDATE dirà a MySQL di aggiungerne uno alla colonna dei download se il file esiste già nel database.

    Pertanto, i nuovi file verranno aggiunti automaticamente al database durante il primo download.

    Passaggio 5 - jQuery

    Per poter effettuare il tracciamento in tempo reale, sarebbe bene aggiornare il contatore accanto al nome del file dopo ogni download.

    Lo faremo con jQuery:

    script.js

    $(documento).ready(funzione()( /* Il codice viene eseguito dopo il caricamento della pagina*/ $("ul.manager a").click(function()( var countSpan = $(".download-count",this); countSpan.text(parseInt(countSpan.text())+1); ) ); ));

    Assegniamo semplicemente un gestore di clic ai collegamenti che portano ai file e ad ogni clic aggiungiamo un valore.

    Passaggio 6 -htaccess

    C'è un'altra cosa che deve essere fatta. Download.php reindirizzerà l'utente al file richiesto, che è stato passato come parametro. Tuttavia, potresti aver notato che i browser tentano di aprire direttamente alcuni tipi di file. Dobbiamo anche avviare il loro download. Questo può essere fatto con poche righe all'interno del file .htacess, che si trova nella cartella dei file.

    Applicazione ForceType/flusso di ottetti

    Ora il nostro bancone è completamente pronto!

    Conclusione

    Affinché la demo funzioni, è necessario ricreare la tabella download_manager nel database MySQL. È possibile trovare il codice SQL richiesto nelle fonti.

    Successivamente, aggiungi i tuoi dati per la connessione al database nel file configuration.php.

    La domanda successiva a cui mi sono interessato di recente durante l'impostazione del progetto del mio autore senza pretese è stata la domanda su come contare il numero di download di un particolare file pubblicato qui. Era più logico supporre che ciò richiedesse un altro plugin, alcuni gestore di download, o cosa è più semplice: contatore di download. Dopo aver cercato in Internet, si è scoperto che, come al solito, questi plug-in sono un carro e un carretto. Ma le loro recensioni - ancora una volta, no. Cosa scegliere non è assolutamente chiaro e, come al solito, ho dovuto testare tutto su me stesso. E secondo i risultati dei test, questo recensore si è rivelato. È stato scritto per molto tempo, mentre l'obiettivo non era un test approfondito di tutti i plug-in di cui sopra con una revisione completa delle loro impostazioni, quindi non troverai screenshot dettagliati di ciascuno, ma ecco le impostazioni chiave. Non volevo assolutamente parlarne: erano così stupidi, ma se avessi già guardato, sarebbe stato un peccato non scrivere proprio niente.

    Introduzione.

    Quindi, il compito era contare il numero di download di un determinato file impostando il contatore di download per WordPress. A un esame più attento, si è suddiviso in diverse attività secondarie, o meglio, desideri per un plug-in che lo eseguisse. Eccone un breve elenco:

    • È necessario che il numero di download sia visualizzato da qualche parte nel pannello di amministrazione, con la possibilità di ordinare: quanti sono stati scaricati al giorno, alla settimana, al mese, all'anno, in totale
    • È auspicabile che tu possa vedere grafici / diagrammi di download di file l'uno rispetto all'altro
    • È auspicabile che tu possa vedere grafici / diagrammi del download di file nel tempo
    • È auspicabile che le statistiche vengano mantenute quando il file è stato scaricato l'ultima volta
    • La possibilità di visualizzare informazioni accanto al collegamento su quante volte il file è stato scaricato, nonché le sue dimensioni e la data di download per un utente che sta per scaricarlo. Bene, o non visualizzare - su richiesta dell'amministratore
    • La possibilità di inserire il codice responsabile di ciò con un pulsante separato nel pannello di pubblicazione dell'editor TinyMCE (non mi piace usare i quicktag)
    • Possibilità di limitare la velocità di download (quindi, per ogni evenienza)
    • Allegare la funzione di caricamento a questo plug-in (caricamento di file sul server) - al contrario, non si è arreso. FTP funziona bene anche per me. Ma se non interferisce molto, lascialo stare
    • Sarebbe bello poter attaccare un bel pulsante al link per il download, anche se ho solo bisogno di scrivere class = "pulsante"

    ABAP

    Download file!

    • Bene, se conti il ​​​​numero di download non solo dal tuo sito, ma semplicemente da un link
    • Possibilità di vietare il download diretto di un file senza mostrare dove si trova sul server.

    Questa è una lista così piccola.

    Revisione

    Dopo aver deciso il TOR, inizieremo a considerare ciò che ci viene offerto direttamente.

    1. Plugin Download Counter 1.2, scaricato da qui.

    Inizialmente, si trovava la pagina del plug-in, ma l'autore non la supporta da più di 4 anni. Creiamo un'altra cartella nella directory dei plugin per me: download-counter, lancia entrambi i file lì. Di conseguenza, dove penseresti? - le impostazioni per esso appaiono nei record. Molto originale, ma va bene.

    Entriamo, scriviamo il percorso del file download-manager.php (non mi piace davvero lanciare sciocchezze proprio alla radice). E guarda cosa abbiamo. Carica il file, controlla se viene scaricato modalità manuale, se inserisci un collegamento diretto nel browser, inserisci il percorso nel plug-in per creare un contatore. In teoria dovrebbe essere creato un ID, che poi dovrà essere inserito ovunque. Ma non è successo niente - dà un errore "Errore - Impossibile salvare il record". Bene, ok, ci siamo persuasi, lo trasferiamo alla radice di download-manager.php - niente di nuovo, lo stesso errore. Bene, al diavolo te, pesce rosso, non mi è bastato capire i plugin a cui l'autore non si è arreso. Inoltre, la funzionalità è praticamente nulla.

    2. Plugin Download Counter Advanced 1.1, scaricato lo stesso.

    Dirò subito che non ha funzionato nemmeno per me, quindi puoi leggere della sua installazione e configurazione solo per interesse accademico. In effetti, questo è lo stesso plugin, solo leggermente modificato. Grazie a Dio, anche se l'istruzione non è tradotta, puoi leggerla normalmente e non cercare di capire cosa intendesse il traduttore. A proposito, nel pannello di amministrazione, sembra essere un plug-in completamente diverso, che offre l'aggiornamento (sì, fichi). Simile al plug-in precedente, la sua pagina è stata individuata e allo stesso modo l'autore non lo supporta da più di 4 anni. Per analogia, creiamo un'altra cartella nella directory dei plugin, la mia è contatore di download, buttiamo lì tutti i file. Le impostazioni sembrano, ovviamente, più ricche, sebbene la velocità di download sia immediatamente limitata per tutti i file e non sia impostata per ognuno individualmente. Dov'è il file download-manager..php (non dimenticare il nome del file alla fine, ma dove sono tutti i download - l'ho indovinato la prima volta, il che mi ha fatto precipitare in un terribile stupore. Come si è scoperto dopo, l'ho indovinato con il nome della directory in cui depositare i download, qui la mia logica ha funzionato al 100% come l'autore del plugin.

    Aggiungiamo i nomi delle cartelle che abbiamo sul server nella directory dei download (nelle impostazioni "categorie e directory") per facilitare la scelta del percorso dei file. Se non li aggiungi, dovrai scaricare tutto nella radice dei download. Salva, puoi aggiungere download. Ecco cosa otteniamo all'incirca.

    Ora proviamo a inserire nel post. Aggiungiamo un collegamento, in esso cambiamo il nostro collegamento al codice, che viene emesso direttamente nelle impostazioni del plug-in. E poi... E fichi a te! Errore HTTP 500 (errore interno del server): si è verificata una situazione imprevista mentre il server stava tentando di soddisfare la richiesta. Bene, stavo per dirti come aggiungere un contatore direttamente al post, e se il link all'interno per farlo accadere

    ABAP

    < Ahref= "http://chewriter..jpg" />

    quindi puoi visualizzare il pulsante di download - storto, davvero. Ecco il plugin per te, hai perso tempo. Non tiene particolarmente le statistiche, perché dov'è il problema tecnico, non lo scopriremo.

    Questo è esattamente il plugin a cui è stato proposto di aggiornare il suddetto Download Counter Advanced. Bene, offre - e va bene, scarichiamo, vediamo. Il plug-in non è stato aggiornato per più di 3 anni e alcuni utenti hanno persino apportato loro stessi correzioni al codice. È installato con successo, l'ascetismo delle impostazioni non ispira ottimismo. A proposito, ben fatto anche loro, hanno indovinato dove posizionare le impostazioni, non peggio che nel caso precedente. Aggiungiamo contatori nella pagina delle impostazioni, tutto sembra essere evidenziato, come dovrebbe.

    Vediamo cosa abbiamo con l'aggiunta al post. Sì, niente pulsanti. E, beh, ovviamente, ho dimenticato proprio lì, tutto è intuitivo. Andiamo alle istruzioni. È necessario bloccare una struttura complessa composta da shortcode come , download , e allo stesso tempo (probabilmente a causa di NC) non conta davvero nulla.

    Pertanto, non verrà ulteriormente considerato, insieme al plug-in Download Counter Chart ad esso collegato, che visualizza le informazioni in forma grafica, che non eseguiremo.

    Scritto dal nostro connazionale, ma purtroppo tutto ciò che può fare è visualizzare il numero di downloader del file accanto al suo nome - non vengono fornite né statistiche né altre chicche. Tuttavia, se sei un fan del minimalismo, questo è ciò di cui hai bisogno. Non dimenticare, non ci sono pulsanti, come uno shortcode


    contatore di download fai-da-te per wordpress

    dovrà essere inserito manualmente. È molto positivo che l'autore abbia dipinto tutto in dettaglio, non ho dovuto testarlo da solo.

    Bene, se stiamo parlando di plugin scritti dalla nostra gente, allora non possiamo non menzionarne uno in più. Il suo enorme vantaggio è che ti consente di contare non solo il numero di download di file, ma anche solo i clic sui collegamenti: non importa se portano a qualsiasi file o solo a un'altra pagina. O a un file sulla pagina di qualcun altro 🙂 Calcolerà anche questo, o meglio, in teoria, dovrebbe calcolarlo. Anche le sue statistiche non sono così calde, non ci sono pulsanti sul pannello di modifica, non ci sono nemmeno restrizioni sui download. Ma è comunque interessante da vedere. Quindi scarica e installa. Fondamentalmente abbastanza descrizione dettagliataè sul sito web dell'autore, quindi non lo diffonderò troppo. Devi sempre tenere presente che se vuoi impostare un contatore su un file o su un link, allora dovresti utilizzare uno shortcode del tipo, oppure inserire la classe class = "count" nel link. Questo, ovviamente, è fastidioso, con un pulsante sarebbe molto più conveniente. Ma la cosa più fastidiosa è che dopo tutti i gesti, non riuscivo ancora a farlo funzionare adeguatamente: se veniva utilizzato lo shortcode, il collegamento per il download stesso non veniva visualizzato e, se veniva utilizzata la classe, le statistiche del collegamento no appaiono nel pannello di amministrazione. Gli screenshot possono essere visualizzati dall'autore - se ti piace l'idea stessa - provalo, forse ci riuscirai.

    Anzi, molto semplice. Non sono richiesti codici brevi, ecc. Tuttavia, questo plugin fornisce statistiche solo per l'autore, ma per i visitatori, accanto al collegamento al file, non viene visualizzato.

    Tuttavia, va notato che vengono conservate statistiche dettagliate su chi ha scaricato quale file e quando. Tuttavia, non è molto comodo usarlo.

    Le impostazioni includono quanto segue:

    • È possibile specificare la directory da cui è consentito scaricare i file
    • È possibile specificare i tipi di file che possono essere scaricati
    • Disabilita il download del file come autore
    • Imposta in secondi l'intervallo durante il quale i click ripetuti su un link dallo stesso IP verranno conteggiati una sola volta
    • Limita il numero di file che possono essere scaricati da un IP al giorno
    • Utilizzare una pagina intermedia con informazioni che il download inizierà ora

    Tuttavia, tutto questo funziona solo se tu (come dirla semplicemente...) hai il permesso di modificare il file .htaccess, o se specifichi il link direttamente inserendolo in

    Siccome però non aveva la possibilità di visualizzare le statistiche per gli utenti, e non volevo ricordare il tipo di collegamento, ho smesso di considerarlo, decidendo di tornare solo se gli altri plugin in coda non riuscivano a risolvere il compito .

    In termini di visualizzazione delle informazioni, questo plugin è molto simile a quello discusso nel paragrafo precedente. Differisce dal fatto che ti consente di visualizzare separatamente le statistiche settimanali, mensili, per qualsiasi periodo e solo i primi 10. In termini di capacità, è molto più miserabile, non ci sono statistiche sull'ultimo download, o su un file specifico, per non parlare della possibilità di imporre restrizioni al download di file. Non esiste alcuna documentazione chiara. Ho avuto l'impressione che si tratti solo di una sorta di malinteso e non di un plug-in. Non voglio nemmeno dare screenshot, ma per essere obiettivo, li darò comunque, copyright.

    Bene, siamo arrivati ​​a qualcosa di più o meno degno. Quasi mezzo milione di download sta dicendo qualcosa. Pagina ufficiale si trova il plug-in. Per inserire un file in un post, è necessario utilizzare la freccia sopra l'editor visivo (l'icona non appare in esso stesso)

    E nella finestra che appare, seleziona il file richiesto (questo è un esempio se è già stato caricato tramite FTP)

    Quindi, fai clic sul pulsante "Salva nuovo download".

    e, passando alla schermata successiva, selezionare il formato di download e cliccare su inserire inviare. È possibile che non accada nulla. Il plugin è leggermente difettoso con ultime versioni wordpress. Pertanto, è inoltre necessario fare clic sul collegamento Visualizza download

    E già allora scegliendo prima il formato di download, fare clic sul collegamento Inserisci accanto al file che si desidera inserire.

    Successivamente, nel post verrà visualizzato lo shortcode corrispondente del tipo

    ABAP

    [downloadid="7592" format="1"]

    Il plugin richiede thin impostazione manuale, ma non viene fornito alcun WYSIWYG. Meno male che devi configurarlo solo una volta. La documentazione dettagliata è sull'autore.

    Ecco una configurazione di esempio:

    ABAP

    (titolo)

    < Ahref= "(url)" title="(!LANG:Scaricato (hit,"ни разу","1 раз","% раза"}">{title}!}

    Va notato che le declinazioni non sono supportate, ad es. se il file è stato scaricato 21 volte e hai "volte" nel tuo modello, suonerà in qualche modo non russo.

    Ed ecco l'opzione del pulsante:

    ABAP

    - (descrizione), (dimensioni), download (data, "Y-m-d"), tempi di download (hit)

    < Ahref= "(url)" title="(!LANG:Scaricato (hit,"ни разу","1 раз","% раза"}">!} - (descrizione), (dimensioni), download (data, "Y-m-d"), tempi di download (hit)

    Sembra così:

    Bene, dopo un po' di raffinamento, ha cominciato ad assomigliare a questo (sempre senza pulsanti):

    Codice riga:

    ABAP

    (tipo_file_icona) (titolo)(Dimensione file: (dimensione), Caricato: (data,"d.m.Y"), Scaricato (hit) volte)
    (descrizione)

    L'elenco delle possibilità è piuttosto ampio:

    • Puoi caricare i file sia con il suo aiuto (facendo clic sulla freccia), sia indicare il luogo in cui si trovano, se sono stati caricati in precedenza tramite FTP, puoi semplicemente specificare l'URL
    • Nasconde la vera posizione del file, puoi sostituire qualsiasi combinazione di URL necessaria
    • Puoi utilizzare il pulsante di download, incluso il tuo
    • Non contare i download da parte dell'amministratore e tutti gli IP non necessari inclusi nell'elenco di controesclusione
    • Se contare i download ripetuti entro un certo tempo dallo stesso IP
    • Puoi impostare diversi formati - con un'immagine, con un contatore, senza contatore, ecc., e utilizzare ciascuno di essi nella situazione appropriata
    • C'è uno scarico del registro di download nel modulo csv un

    Se viene caricato un file mp3 o video, è necessario specificare se forzare il download o meno. Se forza - quindi facendo clic su di esso, verrà scaricato, se non selezionato - riprodotto, quindi salvato - con il tasto destro del mouse. Voglio notare che i file caricati con il suo aiuto non sono posizionati dove viene creata la tua directory speciale per i file, ma nel wp-content/uploads/downloads/ creato da esso - devi ricordare questo, così come il fatto che quando li elimini dalle statistiche, anche i file fisici vengono eliminati dal server. Con quelli che vengono caricati tramite FTP, va tutto bene. Inoltre, se inserisci un collegamento in post diversi allo stesso file, non ho capito se li riassumerebbe. Sfortunatamente, non supporta alcuna restrizione per il download, tranne per il fatto che puoi impedire a tutti di scaricare, ad eccezione degli utenti registrati. Quando vuoi visualizzare il nome del file nella riga inferiore del browser o devi cambiarlo nel suo ID, devi ricordarti di andare su impostazioni-> permalink e salvare lì la configurazione in modo che tutto sia registrato correttamente in .htaccess - Senza questo, i file non verranno scaricati.!

    Le statistiche vengono visualizzate in tre posizioni contemporaneamente: nella console, nelle informazioni sui file e nei registri dei download. Ciò crea alcuni inconvenienti, ad esempio, quando è necessario vedere quando un file è stato scaricato per l'ultima volta, ma è possibile caricare le statistiche sotto forma di file csv e quindi risolverle in Excel. Tenendo conto del fatto che Excel ha la capacità diabolica di creare le tabelle e i grafici necessari, forse non è male. Tuttavia, penso che gli screenshot diranno di più:

    Bene, uno screenshot del registro stesso:

    Allo stesso tempo, un enorme vantaggio è che nella console appare un widget con statistiche come questa:

    In generale, possiamo dire che dopo un piccolo ritocco, il plugin fa bene il suo lavoro.

    Questo plugin è stato scritto dallo stesso autore del plugin WP-Polls che uso su questo sito, per esempio. Sebbene goda, rispetto ad esso, di un ordine di grandezza meno popolare. Ma vediamo se è meritato. Tutta la documentazione è disponibile sul sito web dell'autore. Alla base, il plug-in è assolutamente identico al precedente: il modello è scritto allo stesso modo, non ci sono restrizioni sul download, ad eccezione degli utenti registrati o non registrati, è inoltre necessario utilizzare uno shortcode del modulo

    ABAP

    [downloadid="7592"]

    e per il resto dei punti:

    • Puoi caricare file sia con il suo aiuto (fino a due Mb, beh, o quanti ne hai specificati in php.ini), sia specificare il luogo in cui si trovano, se sono stati caricati in precedenza tramite FTP, puoi semplicemente specificare l'URL
    • Nasconde la vera posizione del file, ma non è possibile sostituire alcuna combinazione di URL necessaria, ci sono solo alcune opzioni fisse, quella principale non ha funzionato per me
    • Può essere configurato per visualizzare informazioni ai visitatori sulla dimensione del file, quante volte è stato scaricato, quando è stato scaricato
    • È possibile visualizzare un'icona per i tipi di file corrispondenti
    • È possibile azzerare il contatore o impostare il valore desiderato

    Tuttavia, ci sono anche alcune differenze. Innanzitutto, nell'editor visivo non è presente alcun pulsante che possa essere utilizzato per inserire uno shortcode. Piuttosto, c'è un pulsante, ma per usarlo devi prima aggiungere un contatore per il file nelle impostazioni del plugin, quindi questo pulsante aggiungerà l'ID del contatore direttamente al post. In secondo luogo, esiste un solo modello e l'output per file diversi informazioni diverse non funzioneranno. Tra i vantaggi delle statistiche, mostra quando il file è stato scaricato l'ultima volta, altrimenti ci sono solo svantaggi: nessun caricamento in un file csv, nessuna visualizzazione di chi ha scaricato (non ci sono IP), nessuna distribuzione per data.

    Ma le icone sono più belle (le ho poi allegate al plugin precedente). Il risultato del suo lavoro è il seguente:

    Inoltre, quando si cancella un record dal database, chiede se è necessario cancellare anche il file stesso, oppure lasciarlo. Ma in termini di totalità delle proprietà, mi è piaciuto meno del precedente - almeno per il fatto che è necessario inserire il file separatamente all'esterno del post, tuttavia non presenta particolari svantaggi - la scelta tra di loro è una questione di gusti, il primo ha più opzioni, statistiche più dettagliate, il secondo - statistiche leggermente più convenienti (anche se più scadenti) e meno funzionalità.

    L'artiglieria pesante entrò in azione. Il plugin è per lo più russificato ed è un download manager, non un contatore. È possibile limitare la velocità di download e il numero di download per persona al giorno.

    Ma direi che alcune delle funzionalità di questo plugin sono ridondanti e quelle statisticamente necessarie non sono sufficienti. Molte impostazioni, widget di download, un complesso sistema di sincronizzazione, un sistema per la visualizzazione di tag mp3, la visualizzazione di file flv, l'organizzazione di un archivio di mini-file, la visualizzazione di tutti i file specificati nella pagina all'inizio o alla fine del post, ecc. , eccetera.

    Non voglio nemmeno dare screenshot di tutte le impostazioni.

    Tuttavia, con tutto questo, per visualizzare magnificamente il modello nel post, ho dovuto modificare il file di stile al suo interno, riducendone la larghezza. Inoltre, per visualizzare il modello predefinito, è necessario dopo aver inserito lo shortcode con il pulsante

    inserire il nome del modello nel codice con le penne. Qualche conflitto con il nome russo. A proposito, sembra così (darò tre varianti di modelli contemporaneamente):

    Conta - attraverso uno stump-deck (beh, o più di un download da IP non conta, non lo so). Le statistiche sono un po' meno che del tutto scarse, molto simili al plug-in appena discusso sopra.

    In generale, mi è rimasta un'impressione: sana, ma stupida. Adatto per l'archiviazione di alcuni file e anche in questo caso, se in combinazione con qualsiasi altro plug-in. L'ho guardato - sì, e demolito.

    Francamente, quando ho letto la sua descrizione, ho pensato: ecco, quello di cui ho bisogno!

    Contatore, protezione con password, shortcode inserito tramite pulsante, pulsante modificabile, ecc.

    E sembra così (ha dato due tre modelli usati contemporaneamente):

    Tuttavia, per aggiungere un file, devi prima aggiungere un contatore nei plugin. In secondo luogo, non ci sono praticamente statistiche.

    In terzo luogo, non è possibile impostare la visualizzazione della dimensione del file per l'utente. In quarto luogo, non esiste un limite di velocità di download, esiste solo la protezione tramite password per il file. I modelli non possono essere modificati. E una grande iscrizione con un'offerta per l'acquisto di una versione premium per 45 dollari. Bene, in generale, capisci. Tutto delizioso è per le nonne. Disattivato e demolito. E belle cornici, bottoni, ecc. - Io stesso prescriverò negli stili quando voglio.

    Riepilogo

    Installa nel modo standard (copiando nella directory wp-content/plugins/download-monitor/, lascia aggiornare, sostituisci tutte le icone con le icone dell'archivio nella directory wp-content/plugins/download-monitor/img/filetype_icons/ e attivare.

    In futuro, se ci metterò le mani sopra, sto pensando di creare collegamenti in bei frame usando css3, di cui molto probabilmente scriverò anche. Resta con noi 🙂

    Aggiorna. Ora l'autore ha rivisto plug-in WordPress Scarica Monitor e crea una versione completamente diversa dall'originale. L'ho verificato, ma mi è piaciuto molto meno perché il modello di modulo di come sarebbe il collegamento per il download ora non è così facile da modificare. L'autore ha deciso che le viste preimpostate già pronte sarebbero state sufficienti. Ad esempio, se nel menu dei download, seleziona le impostazioni vista desiderata dei sei preinstallati, fare clic su Salva

    Quindi, quando scegli la seconda opzione, ottieni qualcosa del genere:

    Quelli. sul nuova versione l'uso della riga che ho fornito nella descrizione non funzionerà, ma sarà necessario scrivere un file php speciale che descriverà questo modello di output. Ma la cosa più triste non è nemmeno questa, ma il fatto che questo file php, se inserito nella directory con il plugin, verrà sovrascritto ogni volta che il plugin viene aggiornato. E se lo metti nella directory con il tema, allora quando cambi il tema (anche se questo, ovviamente, accade molto meno spesso). Ma in ogni caso scriverlo è un compito piuttosto laborioso, e finora non ho voglia di farlo. Quindi l'unico vantaggio del plugin aggiornato

    Ho deciso di vedere quante volte uno dei miei script viene scaricato dal sito. Per fare ciò, ho deciso di scrivere un contatore di download di file per il sito. Ci sono molte implementazioni di questa attività su Internet, ma comunque leggi la mia soluzione.

    La logica del contatore di download è abbastanza semplice. Per implementarlo, useremo il mio ajax preferito. Ci aggrappiamo al pulsante quando si verifica l'evento clik, la chiamata via ajax al file php del contatore. In php, la richiesta ajax viene elaborata e scritta file di testo cifre per il numero totale di salti. Dopo una registrazione riuscita, viene restituita una risposta con un contatore totale di download e l'utente viene reindirizzato a un collegamento per scaricare il file (il file viene scaricato). Ecco una logica così semplice Ora iniziamo a implementarla. Creiamo in anticipo un file test.zip scaricabile. Creiamo il codice del pulsante e mostriamo il contatore dei salti.

    Numero di salti:

    Abbiamo creato un pulsante con id="btnSend" , visualizzeremo il contatore in uno span con id="countView" , memorizzeremo un collegamento al file scaricato nell'attributo data-download

    Ora colleghiamo un gestore di clic al pulsante. Qui useremo già js e jquery. Puoi leggere come implementare clik usando jQuery. Ma prima di installare il gestore dei clic, accederemo con Ajax al file count.php, che conterrà tutto il lavoro del contatore. Puoi leggere di più sul trasferimento dati Ajax. Questo è necessario per visualizzare dal file dove scrive il contatore, il numero di download già effettuati e visualizzarli in uno span con id="countView"

    /*ottenere il numero corrente di download*/ $(document).ready(function()( //vieta la richiesta cache ajax //altrimenti il ​​contatore fallirà $.ajaxSetup((cache: false)); var html; $. ajax (( //come passeremo il tipo di dati: "GET", //dove passiamo url: "count.php", //quali dati passiamo data: (flag: 2), //evento dopo aver ricevuto una risposta from count.php success : function(data)( html=data; //visualizza il numero corrente di download $("#countView").html(html); ) )); /*blocca un evento sul pulsante di download del file */ var clickevent=false; //click check flag //click handler $("#btnSend").click(function()( if(!clickevent)( $.ajax(( //come invieremo il tipo di dati: "GET", //dove passiamo l'url: "count.php", //quali dati inviare data: (flag: 1), //evento prima dell'invio di ajax beforeSend: function()( //se il pulsante è stato cliccato then true clickevent=true; ), //evento dopo aver ricevuto la risposta, //ottenere i dati in data success: function(data)( //dopo aver eseguito le azioni, consentire nuovamente //l'elaborazione fare clic sul pulsante clickevent=false; html=dati; //produce un nuovo contatore $("#countView").html(html); //ottieni il link da data-download //reindirizza al link di download, scarica il file window.location.href = $("#btnSend").data("download"); ) )); ) restituisce false;//vieta l'elaborazione dell'evento al clic )); ));

    Per evitare ripetute pressioni errate del pulsante di invio, ho introdotto nello script il flag clickevent. Fino a quando non viene restituita la risposta da count.php con i dati del contatore aggiornati, sarà vietato fare clic sul pulsante. Penso che il lavoro del codice dopo aver fatto clic sul pulsante sia più o meno chiaro. Dopo aver fatto clic sul pulsante di download, i dati vengono trasferiti al file count.php, dove vengono elaborati e vengono restituiti i dati del contatore aggiornati, si verifica un reindirizzamento al collegamento di download e, di conseguenza, il file viene scaricato.

    Analizziamo ora il cuore del nostro script, ovvero il file count.php.

    Funzione clearInt ($date)( //trasforma la data in un numero non negativo return abs((int)$date); ) if($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest") ( //controlla quale flag è arrivato if (clearInt($_GET["flag"]==1)) ( //apre il file in lettura $f=fopen("mycount.txt","a+"); //blocca l'accesso al file da altri programmi flock($ f,LOCK_EX); //ottenere il valore del contatore dal file $count=fread($f,100); //aggiungere il contatore @$count++; //sovrascrivere il file ftruncate($f,0); //alimenta un nuovo contatore che legge fwrite ($f,$count); //chiude il file fclose($f); //restituisce il valore echo $count; ) if(clearInt($_GET["flag"]==2) ) ( $c=fopen(" mycount.txt","a+"); flock($c,LOCK_EX); $festc=fread($c,100); fclose($c); //valore di ritorno echo $festc ;))

    Qui penso che la stessa cosa sia semplice. Se arriva il flag 1, riscriviamo il contatore. Se viene visualizzato il flag 2, vengono semplicemente restituiti i dati sul numero di download. Tutto il resto penso sia chiaro dai commenti nel codice.

    Contatore di download di Joomla

    Ho deciso di allegare un contatore simile a uno dei miei progetti joomla. In teoria, ovviamente, è necessario scrivere un modulo separato o integrare il codice nel controller del componente contenuto com, in modo che i dati del contatore non vengano scritti in un file, ma nel database e per ogni articolo separatamente. Ma non c'è tempo per tale sviluppo e ho risolto il problema in modo più semplice. Avevo bisogno di un contatore per una pagina. Ho preso il file count.php e l'ho trasferito nel template joomla, che è attivo questo momento connesso (alla radice del sito templates/your_template). Non dimenticare di inserire il codice definito("_JEXEC") o die, in cima a count.php; (questo è per joomla). Inseriamo il pulsante di download nella pagina che stiamo creando e il codice js può anche essere incorporato nella pagina o collegato fascicolo separato. Ad esempio, ho un file separato (si trova nella cartella template js). Nel modello stesso, nell'intestazione, la connessione viene effettuata tramite il codice

    E non dimenticare di ottenere con una richiesta ajax, stiamo accedendo all'url: "/index.php?tmpl=count" e non all'url: "count.php", . Proprio così, ho appena fottuto il contatore di download di file su joomla.

    Per scaricare il Contatore segui le semplici istruzioni.

    1. Per iniziare a scaricare il file di installazione, fai clic sul pulsante blu "Scarica dal server" situato appena sopra.
    2. Successivamente, il server preparerà e verificherà la presenza di virus nel file di installazione.
    3. Se il file non è infetto e tutto va bene, apparirà un pulsante grigio "Download".
    4. Cliccando sul pulsante "Download", il file verrà scaricato sul tuo computer.

    Non ti chiediamo di passare attraverso un noioso processo di registrazione o di inviare alcun SMS per la conferma. Scarica e divertiti =)

    Come installare Contatore

    Per installare il programma, segui le semplici istruzioni che si applicano alla maggior parte dei programmi.

    1. Eseguire il file scaricato facendo doppio clic su di esso. Tutti i file di installazione sono presi dai siti Web ufficiali degli sviluppatori.L'ultima data di aggiornamento del file Counter versione 1.1 è stata il 28 dicembre 2016 alle 4:38.
    2. Accetta il contratto di licenza nella finestra che appare. Puoi anche leggere il contratto di licenza sul sito Web ufficiale dello sviluppatore del programma.
    3. Selezionare i componenti richiesti che si desidera installare. Deselezionare le caselle di controllo che potrebbero essere necessarie per installare programmi aggiuntivi.
    4. Seleziona una cartella sul tuo computer in cui desideri installare il programma. Nella maggior parte dei casi, il programma seleziona automaticamente una cartella, ad esempio in Windows è C:\Program Files\
    5. Infine, il gestore dell'installazione del programma potrebbe offrire di creare un "collegamento sul desktop" o una "cartella del menu Start".
    6. Quindi inizierà il processo di installazione. Dopo il completamento, il gestore dell'installazione potrebbe chiederti di riavviare il computer affinché il programma funzioni più correttamente.

    Nell'articolo di oggi, creeremo un sistema di monitoraggio del caricamento dei file semplice ma affidabile. Ogni file avrà una riga corrispondente nel database in cui verrà memorizzato il numero totale di download di quel file. PHP aggiornerà il database MySQL e reindirizzerà gli utenti ai file appropriati.

    Per tenere traccia del numero di download, tutto ciò che devi fare è caricare i file nella cartella corretta e utilizzare un URL specifico per accedervi.

    Passo 1 - XHTML

    Per prima cosa abbiamo bisogno del markup XHTML. È molto semplice: questo è un blocco comune file-manager, contenente un elenco puntato in cui si troverà un collegamento a ciascun file all'interno dell'elemento li.

    I file per i quali verrà conteggiato il numero di download devono essere caricati nella cartella File situato nella directory principale dello script (puoi vedere come è organizzata la struttura del file nell'archivio di esempio). PHP eseguirà il ciclo di tutti i file nella cartella e aggiungerà ciascun file come elemento li separato a un elenco puntato.

    demo.php

    • servizio fotografico-1.0.zip 0 Scarica

    Si noti che l'attributo href al collegamento passa il nome del file caricato come parametro per il file scarica.php. Qui è dove verranno conteggiati i download, come vedrai in seguito.

    Non è necessario utilizzare questa particolare interfaccia per organizzare il conteggio dei download. Puoi semplicemente collegarti a scarica.php sulle pagine del blog o del sito Web e tutti i download verranno conteggiati correttamente.

    Passaggio 2: CSS

    Una volta che il nostro markup XHTML è pronto, possiamo concentrarci sull'aspetto del nostro script. Gli stili CSS sottostanti assegnano l'aspetto al blocco file-manager, tramite il suo ID, dato che ne abbiamo solo uno sulla pagina. Gli elementi rimanenti sono stilizzati attraverso i nomi delle classi.

    style.css

    #file-manager( background-color:#EEE; border:1px solid #DDD; margin:50px auto; padding:10px; width:400px; ) ul.manager li( background:url("img/bg_gradient.gif") ripeti-x al centro in basso #F5F5F5; bordo:1px solido #DDD; colore-bordo-sopra:#FFF; stile elenco:nessuno; posizione:relativa; ) ul.manager li a( display:block; padding:8px; ) ul.manager li a:hover .download-label( /* Quando si passa sopra un elenco, mostra il testo verde di download al suo interno: */ display:block; ) span.download-label( background-color:#64B126; border :1px solid #4E9416; colore:bianco; display:nessuno; font-size:10px; padding:2px 4px; position:absolute; right:8px; text-decoration:none; text-shadow:0 0 1px #315D0D; top :6px; /* Angoli arrotondati CSS3 */ -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; ) span.download-count( color:#999; font-size: 10px; padding:3px 5px; position:absolute; text-decoration:none; )

    Si noti che qui la didascalia "download" è nascosta di default, con la proprietà visualizzazione: nessuna. Viene visualizzato attraverso blocco di visualizzazione, solo quando passi il mouse sopra il link, nessun JavaScript. Viene utilizzato un po' di CSS3 per arrotondare gli angoli della didascalia.

    Passaggio 3: PHP

    Come abbiamo detto sopra, PHP scorre l'intera cartella File e genera ogni file come elemento li di un elenco puntato. Diamo un'occhiata più da vicino a come questo accade.

    demo.php - In alto

    // Segnalazione errori: error_reporting(E_ALL^E_NOTICE); // Incluso il file di connessione al DB: require "connect.php"; $estensione=""; $array_file = matrice(); /* Apertura della directory delle miniature e scorrimento di tutte le miniature: */ $dir_handle = @opendir($directory) o die("C'è un errore con la directory dei file!"); while ($file = readdir($dir_handle)) ( /* Saltare i file di sistema: */ if($file(0)==".") continue; /* end() restituisce l'ultimo elemento dell'array generato da la funzione burst(): */ $extension = strtolower(end(explode(".",$file))); /* Saltare i file php: */ if($extension == "php") continue; $files_array =$file; ) /* Ordinamento alfabetico dei file */ sort($files_array,SORT_STRING); $file_download=array(); $result = mysql_query("SELECT * FROM download_manager"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* La chiave dell'array $file_downloads sarà il nome del file e conterrà il numero di download: */ $file_downloads[ $row["nomefile"]]=$row["download"]; )

    Nota come selezioniamo tutti i record dalla tabella download_manager con mysql_query() e quindi aggiungerli all'array $file_download, con il nome file della chiave dell'array e il valore downloads. Quindi, più avanti nel codice, possiamo scrivere $file_download['archivio.zip'] e visualizzare il numero di download di questo file.

    Di seguito è riportato il codice utilizzato per generare gli elementi li di un elenco puntato.

    demo.php - Parte centrale

    Foreach($files_array as $key=>$val) ( echo "

  • ".$val." ".(int)$file_download[$val]." Scarica
  • "; }

    Tutto è molto semplice: attraversiamo il ciclo per ciascuno per matrice $array_file e visualizzare i dati necessari sulla pagina nel markup appropriato.

    Ora diamo un'occhiata più da vicino a come funziona la contabilità dei download.

    scarica.php

    // Segnalazione errori: error_reporting(E_ALL^E_NOTICE); // Incluso il file di connessione: require("connect.php"); if(!$_GET["file"]) error("Parametro mancante!"); if($_GET["file"](0)==".") error("File errato!"); if(file_exists($directory."/".$_GET["file"])) ( /* Se il visitatore non è un motore di ricerca, conta il download: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filename="".mysql_real_escape_string($_GET["file"])."" ON DUPLICATE KEY UPDATE downloads=downloads+1"); header("Posizione: ".$directory."/".$_GET[" file"]); exit; ) else error("Questo file non esiste!"); /* Funzioni di supporto: */ function error($str) ( die($str); ) function is_bot() ( /* Questa funzione controllerà se il visitatore è un robot del motore di ricerca */ $botlist = array("Teoma" , "alexa", "froogle", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory", "Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot", "crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp", "msnbot", "appe", "FAST", "WebBug", "Spade", "ZyBorg " ", "rabaz", "Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot", "Mediapartners-Google", "Sogou web spider", "WebAlta Crawler","TweetmemeBot", "Butterfly", " Twitturls","Me.dium","Twiceler"); foreach($botlist as $bot) ( if(strpos($_SERVER["HTTP_USER_AGENT"],$bot)!==false) return true; // È a bot ) restituisce false; // Non è un bot )

    Qui, devi assolutamente verificare se il visitatore è un robot del motore di ricerca che esegue la scansione dei tuoi collegamenti. I robot sono buoni visitatori perché aiutano a inserire il tuo sito nei motori di ricerca, ma nel nostro caso possono distorcere le statistiche sui download. Ecco perché il database viene aggiornato solo dopo che il visitatore ha superato la verifica is_bot().

    Passaggio 4: MySQL

    Come accennato nel passaggio precedente, il numero di download viene registrato come stringa nella tabella download_manager del database MySQL. Innanzitutto, lasciatemi spiegare come funziona questa parte della query:

    scarica.php

    INSERT INTO download_manager SET filename="filename.doc" ON DUPLICATE KEY UPDATE downloads=downloads+1

    La prima parte della query indica a MySQL di inserire una nuova riga nella tabella. download_manager e impostare il valore del campo nome del file uguale al nome del file richiesto da caricare. Inoltre, il campo nome del file definito come indice di tabella univoco. Ciò significa che una riga con un nome file specifico può essere inserita solo una volta, altrimenti si verificherà un errore di campo chiave duplicato.

    È in questo caso che entra in vigore la seconda parte della richiesta - IN AGGIORNAMENTO DELLA CHIAVE DUPLICATA, che aumenta il valore del campo download di uno se il file è già nel database.

    In questo modo, i nuovi file verranno automaticamente inseriti nel database la prima volta che vengono caricati.

    Passaggio 5: jQuery

    Per rendere il nostro contatore di download più visivo, sarebbe bello aggiungere la possibilità di aggiornare il contatore accanto al nome del file non appena l'utente inizia a scaricare. Finora, per vedere i nuovi valori dei contatori, l'utente deve ricaricare la pagina.

    Questo può essere risolto con un piccolo pezzo di codice:

    script.js

    $(document).ready(function()( /* Questo codice viene eseguito dopo che il DOM è stato caricato completamente */ $("ul.manager a").click(function()( var countSpan = $(".download -count",this); countSpan.text(parseInt(countSpan.text())+1); )); ));

    Abbiamo appena assegnato un gestore di eventi al clic sul collegamento. Ogni volta che l'utente fa clic sul collegamento, incrementiamo di uno il valore dei download correnti.

    Passaggio 6: htaccess

    Abbiamo ancora una cosa da fare prima di poter dire che il lavoro è finito. Potresti aver già notato che alcuni tipi di file, il browser predefinito tenta di aprirsi immediatamente. Invece, dobbiamo iniziare a scaricare il file. Questo è abbastanza facile da fare aggiungendo alcune righe all'interno del file .htaccess situato nella cartella File:

    Applicazione ForceType/flusso di ottetti

    Ecco fatto, il nostro contatore di download è pronto.

    Conclusione

    Per eseguire questo esempio sul tuo server, dovrai creare una tabella download_manager in un database MySQL, a cui ovviamente hai accesso. Nell'archivio con un esempio, c'è un file tabella.sql, che contiene il codice SQL necessario per creare la tabella desiderata.

    Successivamente, è sufficiente specificare i dettagli della connessione al database nel file configurazione.php.