Installera en nedladdningsräknare - recension av plugins för WordPress. Skapa en filnedladdningsräknare med PHP och MySQL Spara text- och grafikfiler

På många webbplatser kan du se länkar för att ladda ner filer. Till exempel publicerar tillverkande företag instruktioner för en viss produkt på sina officiella sidor. Dessutom utvecklarna programvara De erbjuder också att ladda ner sitt program gratis, vilket gör att användaren kan bli bekant med dess funktioner och funktion.

När du gör en fil tillgänglig för gratis nedladdning är det viktigt att veta hur många gånger den har laddats ner. Detta är först och främst nödvändigt för statistik, vars analys kommer att hjälpa till att bestämma användbarheten av informationen för slutanvändaren.

Hur ställer jag in en nedladdningsräknare på en WordPress-webbplats?

Det finns inget sätt att se denna statistik bland WordPress-verktygen. Därför kommer vi att använda en tredjepartslösning - Kama Click Counter-plugin.

Kama Click Counter plugin

Det kostnadsfria insticksprogrammet Kama Click Counter ger alla nödvändiga verktyg för att korrekt räkna antalet nedladdningar av en viss fil. Så för det första måste den installeras och aktiveras. Till exempel kommer vi att visa på inläggssidan en länk till en pdf-fil, för vilken vi räknar antalet nedladdningar. Det bör noteras att filer laddas upp till webbplatsen med standardmetoder WordPress Media Libraries (Media -> Lägg till nytt). Därefter måste du öppna inlägget eller sidan för redigering. I innehållsdelen måste du placera markören på den plats där länken till filen kommer att placeras och klicka på knappen som visas i verktygsfältet för visuell redigerare.

I ett popup-fönster kommer plugin-programmet att be dig välja den tidigare nedladdade filen. För att göra detta, tryck på knappen med förstoringsglasikonen.

I mediafilbiblioteket, välj önskad fil och klicka på knappen Välj fil.

Som ett resultat kommer en speciell kortkod att infogas i innehållsdelen av inlägget eller sidan, som tjänar till att visa en länk för att ladda ner filen.

Efter att ha uppdaterat materialet (knappen Uppdatera) kan du gå till sidan för att se det.

Pluginet kan också visa nedladdningsstatistik i användardelen av webbplatsen – i en widget. Observera att plugin-programmet som standard inte visar specifika siffror i widgeten om vad som laddades ner och hur många gånger. Endast en lista över de mest nedladdade filerna visas. För att göra detta, gå till adminsektionen Utseende -> Widgets och dra KSS:Top Downloads-widgeten till önskad plats i sidofältet.

Du kan se att widgeten har flera tillgängliga alternativ som låter dig ändra listan.

Här kan du ställa in följande grundläggande parametrar:

  • widgettitel (Titelfält);
  • antal utdatafiler i listan (hur många länkar ska visas?);
  • sortera resultaten (hur sorterar man resultatet?);
  • miljö utseende mall (Mall- och CSS-mallblock).

En speciell egenskap hos plugin är dess flexibla mallanpassning. Här kan du använda så kallade taggar, i stället för vilka den eller den informationen kommer att visas.

Efter att alla widgetinställningar har slutförts och sparats (knappen Spara) kan du se resultatet på webbplatsen.

Det har inte funnits några lektioner om PHP och MySQL på länge. Idag kommer vi att skapa en enkel men effektiv nedladdningsräknare.

Varje fil kommer att ha en post i en databastabellrad. Antalet filnedladdningar kommer att lagras i samma tabell. PHP kommer att uppdatera MySQL-databasen och omdirigera användaren till nödvändig fil.

För att spåra antalet nedladdningar av en fil måste du lägga den i filmappen och använda en speciell URL för att komma åt den.

Steg 1 - XHTML

Det första steget är att skapa markeringen för vårt skript. Det är väldigt enkelt - vi har en div filhanterare som innehåller en oordnad lista, där varje element i listan ansvarar för en fil.

De filer vars nedladdningar behöver spåras placeras i mappen filer i skriptets rotmapp. PHP går sedan igenom alla filer och lägger till var och en som ett listelement (li) till den oordnade listan.

demo.php


  • photoShoot-1.0.zip 0 nedladdning

Observera att href-attributet för länkarna skickar filnamnet som en parameter till download.php. Det är här spårningen av antalet nedladdningar sker.

Du behöver inte visa allt på samma sätt – du kan helt enkelt länka till download.php på dina sidor och alla nedladdningar går inte igenom.

Steg 2 - CSS

Efter markering, låt oss börja med designen. CSS-reglerna nedan hänvisar till filhanterarens div som använder id (#-symbol), eftersom den bara visas en gång på sidan, och till andra element med klassnamn.

styles.css

#filhanterare( bakgrundsfärg:#EEE; kant:1px fast #DDD; marginal:50px auto; utfyllnad:10px; bredd:400px;)
ul.manager li( background:url("img/bg_gradient.gif") repeat-x center bottom #F5F5F5; border:1px solid #DDD; border-top-color:#FFF; list-style:none; position:relative ; ) ul.manager li a( display:block; padding:8px; ) ul.manager li a:hover .download-label( /* När du håller muspekaren över ikonen, visa grön nedladdningstext: */ 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: ingen ; text-shadow:0 0 1px #315D0D; top:6px; /* CSS3 Rundade hörn */
-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;)

Steg 3 - PHP

Som jag sa tidigare letar PHP efter filer i mappen filer och matar ut varje fil som ett listobjekt i en oordnad lista. Låt oss ta en titt på hur detta händer

demo.php - övre del

// Felrapportering: error_reporting(E_ALL^E_NOTICE); // : kräver "connect.php"; $extension=""; $files_array = array(); /* Öppna mappen och gå igenom alla filer: */ $dir_handle = @opendir($katalog) eller die("Det är ett fel med din filkatalog!"); while ($fil = readdir($dir_handle)) ( /* Skip systemfiler: */ if($file(0)==".") fortsätt; /* end() visar det sista elementet i arrayen som genereras av explode()-funktionen: */ $extension = strtolower(end(explode(".",$file))); /* Hoppa över php-filer: */ if($extension == "php") fortsätt; $files_array=$fil; ) /* Sortera filerna i alfabetisk ordning */ sort($files_array,SORT_STRING); $file_downloads=array(); $result = mysql_query("SELECT * FROM download_manager"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* Arraynyckeln $file_downloads kommer att vara namnet på filen och kommer att innehålla antalet nedladdningar: */ $file_downloads[$row ["filnamn"] ]=$rad["nedladdningar"]; )

Lägg märke till hur vi väljer alla rader från download_manager-tabellen med mysql_query(), och senare lägger till dem i $file_downloads-matrisen med filnamnet som nyckel till antalet nedladdningar. Så längre i koden kan vi skriva $file_downloads["archive.zip"] och visa antalet nedladdningar.

Nedan kan du se koden som genererar listobjekten:

demo.php - mittdelen

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

  • ".$val." ".(int)$file_downloads[$val]." ladda ner
  • "; }

    Allt görs helt enkelt med hjälp av en foreach loop på $files_array-arrayen. Efter detta matas allt ut med eko.

    Låt oss nu titta närmare på hur filspårning fungerar.

    download.php

    // Felkontroll: error_reporting(E_ALL^E_NOTICE); // Inkludera anslutningsfilen till DB: require("connect.php"); if(!$_GET["fil"]) error("Saknad parameter!"); if($_GET["fil"](0)==".") fel("Fel fil!"); if(file_exists($directory."/".$_GET["fil"])) ( /* Om besökaren inte är en sökbot räknar vi nedladdningen: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filnamn ="".mysql_real_escape_string($_GET["fil"])."" PÅ DUPLIKATNYCKELUPPDATERING downloads=downloads+1"); header("Plats: ".$directory."/".$_GET[ "fil"] ); exit; ) else error("Denna fil gör det finns inte!"); /* hjälpfunktioner: */ function error($str) ( die($str); ) function is_bot() ( /* Denna funktion söker efter en 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 som $bot) ( if(strpos($_SERVER["HTTP_USER_AGENT"],$bot)!==false) returnerar sant; // Är en bot ) return false; // Inte en bot)

    Det är viktigt att kontrollera om din besökare är en människa eller en sökmotorrobot. Robotar är verkligen bra, men låt oss inte låta dem förvränga vår statistik. Det är därför raden i databasen uppdateras först efter is_bot()-kontrollen.

    Steg 4 - MySQL

    Som vi märkte i föregående steg lagras antalet nedladdningar som en rad i tabellen download_manager. Låt oss först förklara hur denna begäran fungerar:

    download.php

    INSERT INTO download_manager SET filename="filename.doc" PÅ DUPLIKATNYCKELUPPDATERING downloads=downloads+1

    Den säger åt MySQL att infoga en ny rad i tabellen download_manager och ställa in radens filnamnsfält till värdet för filen som kallas för nedladdning. Filnamnsfältet är dock betecknat som ett unikt index i tabellen. Detta innebär att varje rad bara kan infogas en gång, annars uppstår ett duplicerat nyckelfel.

    Det är här den andra delen av frågan kommer att fungera - ON DUPLIKATE KEY UPDATE kommer att berätta för MySQL att lägga till en till nedladdningskolumnen om filen redan finns i databasen.

    På så sätt kommer nya filer automatiskt att läggas till i databasen första gången de laddas ner.

    Steg 5 - jQuery

    För att kunna spåra i realtid skulle det vara bra att uppdatera räknaren bredvid filnamnet efter varje nedladdning.

    Vi kommer att göra detta med jQuery:

    script.js

    $(document).ready(function())( /* Koden exekveras efter att sidan har laddats */ $("ul.manager a").click(function())( var countSpan = $(".download -count",this); countSpan.text(parseInt(countSpan.text())+1); )); ));

    Vi tilldelar helt enkelt en klickhanterare till länkarna som leder till filerna, och för varje klick lägger vi till ett värde.

    Steg 6 - htaccess

    Det finns en sak till som måste göras. Download.php omdirigerar användaren till den begärda filen som skickades som en parameter. Men du kanske har märkt att webbläsare försöker öppna vissa typer av filer direkt. Vi måste påbörja deras lastning. Detta kan göras med några rader inuti .htacess-filen, som finns i mappen filer.

    ForceType-applikation/oktettström

    Nu är vår disk helt klar!

    Slutsats

    För att demon ska fungera måste du återskapa tabellen download_manager i MySQL-databasen. Du kan hitta den SQL-koden som krävs i källorna.

    Efter detta, lägg till dina data för att ansluta till databasen i filen configuration.php.

    // Ta bort magiska citat läge konvertering $_POST["content"] = addslashes($_POST["content"]);

    // Skriv om innehållet i filen file_put_contents($_POST["filnamn"], "$_POST");

    4.9. Filnedladdningsräknare

    Driften av alla filnedladdningsräknare bygger på att besökaren inte får själva filen som en nedladdningslänk, utan en länk till ett skript som tar hänsyn till nedladdningen och skickar filen till användarens webbläsare.

    Vi kommer att bygga vår räknare på ett sådant sätt att länkar för att ladda ner en fil är länkar till den aktuella sidan och skickar filnamnet som en parameter, till exempel index.php?down=archive.zip . Skriptet kommer att kontrollera om ned-parametern har godkänts, och i så fall loggar det nedladdningen av arkivet i filecount.txt. När sidan laddas om kommer räknarvärdena för varje arkiv att extraheras från filen för utmatning till webbläsarfönstret. Filen kommer att överföras för nedladdning genom att skicka HTTP-platshuvudet till besökaren och anger sökvägen till det nedladdade arkivet. Skriptet för nedladdningsräknare kan se ut som det som visas i Listing 4.31.

    Notering 4.31. Filnedladdningsräknare

    // Ställ in felhanteringsnivå error_reporting(E_ALL & ~E_NOTICE);

    // Registrera filnamn i en array

    $filnamn = array("arkiv1.zip","arkiv2.zip","arkiv3.zip");

    // Namn på filen där statistik lagras $countname = "filecount.txt";

    // Om filen finns,

    // läs aktuell statistik i en array if(file_exists($countname))

    // Få innehållet i disken

    $content = file_get_contents($countname);

    // Packa upp arrayen

    $count = unserialize($content);

    // Om det inte finns någon sådan fil, skapa den,

    // och återställ statistiken

    // Fyll $count-arrayen med nollvärden foreach($file_name som $file)

    $count[$fil] = 0;

    // Packa arrayen och placera den i räknaren file_put_contents($countname, serialize($count));

    // Kontrollera om värdet på nedparametern har skickats

    // via GET-metoden

    if(isset($_GET["ner"]))

    // Kontrollera om värdet på parametern $_GET["down"] är inkluderat

    // i arrayen $file_name

    if(in_array($_GET["ner"],$filnamn))

    // Registrera det faktum att den här filen har laddats ner

    //Öka värdet på räknaren med tangenten

    // $_GET["ned"] med en

    $count[$_GET["ner"]]++;

    // Skriv över räknarfilen file_put_contents($countname, serialize($count));

    echo "Filen $file laddades ".intval($count[$fil])." gånger
    ";

    Namnen på nedladdade filer lagras i arrayen $file_name; lägga till ett nytt arkiv resulterar i dess automatiska registrering i systemet. Förhandsregistrering i arrayen är nödvändig av flera skäl. Först, när du accepterar ett arraynamn via nedparametern, måste du kontrollera om det är bland filerna som får laddas. För det andra är det mycket bekvämare att bearbeta filnamn i en array. Således byggs $count-matrisen, som lagrar antalet nedladdningar av filer, automatiskt baserat på den uppsättning av filer som är registrerade i systemet,

    Det är bekvämt att packa en array i en sträng med funktionen serialize() och sedan packa upp den tillbaka i en array med funktionen unserialize().

    NOTERA

    Det är viktigt att komma ihåg att alla HTTP-rubriker måste skickas innan huvudinnehållet skickas, annars kommer de inte att skickas och PHP-tolken kommer att utfärda en varning "Varning: Kan inte ändra rubrikinformation - rubriker redan skickade av"

    (Varning: Det är inte möjligt att ändra rubrikinformationen - rubrikerna har redan skickats). Detta dikteras av HTTP-protokollet: rubrikerna skickas först, sedan innehållet i dokumentet, så alla utdata till webbläsarfönstret uppfattas som slutet på att skicka rubrikerna och början på att skicka dokumentets brödtext. Om utdata till webbläsarfönstret är oundvikligt innan rubrikerna skickas, måste du tillgripa utdatakontrollfunktioner, placera all utdata i en buffert och skicka den i slutet av skriptet.

    Som du kan se i Listing 4.31, hanterar skriptet den första körningen där filen filecount.txt saknas - den skapas automatiskt vid första sidladdningen, utlöses av nollvärden för varje fil i $file_name-matrisen. Resultatet av skriptet från Listing 4.31 kan ses i Fig. 4.4.

    Ris. 4.4. Resultatet av filräknaren

    4.10. Spara text- och grafikfiler

    Att följa en länk till text- eller HTML-filer resulterar i att de visas i webbläsarfönstret, vilket inte alltid är bekvämt, särskilt om filen är avsedd att laddas ner. Samma öde väntar grafiska filer och i allmänhet alla filer som webbläsaren kan visa. Besökarens webbläsare "lär sig" om innehållet i filen från servern, eftersom varje fil åtföljs av HTTP-rubriker som informerar klienten om innehållet, storleken på den nedladdade filen, behovet av att sätta en cookie, etc. Om filtypen kunde inte fastställas, den skickas helt enkelt som binär ström.

    Du kan undertrycka detta beteende genom att skicka HTTP-rubriker som visas i Listing 4.32.

    Notering 4,32. Ett skript som låter dig spara text- och grafikfiler

    $filnamn = basnamn($_GET["ned"]); header("Content-Disposition: bilaga; filnamn=$filnamn"); header("Innehållstyp: applikation/oktettström"); header("Content-length: ".filesize($_GET["ner"]));

    echo file_get_contents($_GET["ner"]); ?>

    Skriptet i Listing 4.32 tar ett filnamn som en GET-parameter, till exempel,

    index.php?down=filtext.txt. Funktionen basename() hämtar namnet

    fil (om parametern GET ner innehåller sökvägen till filen). Content-Disposition HTTP-huvudet anger namnet på filen som ska sparas, vilket bestäms av filnamnsattributet. I skriptet ovan är filnamnsparametern samma som namnet på filen som skickas, men ett godtyckligt namn kan skickas som filnamnsparameter. HTTP-huvudet av innehållstyp indikerar att data som överförs är binär och inte bör tolkas av webbläsaren. Content-length HTTP-huvudet förmedlar storleken på filen till klienten. Den sista raden visar filinnehållet som skickas genom parametern $_GET["down"], som hämtas med funktionen file_get_contents(). Resultatet av skriptet från Listing 4.32 visas i fig. 4.5.

    NOTERA

    Det är viktigt att inget annat matas ut till strömmen efter att ha matat ut innehållet i filen: varken av ekokonstruktionen eller direkt utmatning - annars kommer allt att läggas till i slutet av filen. Detta gäller både möjliga mellanslag och nyrader efter den avslutande ?>-taggen.

    Ris. 4.5. Dialogruta för att ladda ner en fil

    Nästa fråga som jag nyligen blev intresserad av när jag satte upp mitt enkla författarprojekt var frågan om hur man räknar antalet nedladdningar av en viss fil som postats här. Det var mest logiskt att anta att detta kräver ett annat plugin, någon form av nedladdningshanterare, eller vad som är enklare - nedladdningsräknare. Efter att ha sökt igenom Internet visade det sig att det som vanligt finns en vagn och en liten vagn med dessa plugins. Men återigen, det finns inga recensioner av dem. Det är absolut inte klart vad jag ska välja, och som vanligt var jag tvungen att testa allt på mig själv. Och baserat på testresultaten skapades denna granskare. Det tog lång tid att skriva, och målet var inte att noggrant testa alla plugins som ges med en fullständig granskning av deras inställningar, så du hittar inte detaljerade skärmdumpar av var och en, men det kommer att finnas viktiga inställningar. Jag ville inte prata om några av dem alls - de var så dumma, men eftersom jag tittade på dem var det synd att inte skriva något alls.

    Introduktion.

    Så uppgiften var att räkna antalet nedladdningar av en viss fil genom att ställa in en nedladdningsräknare för WordPress. Vid närmare granskning föll det i flera deluppgifter, eller snarare önskemål om ett plugin som skulle uppfylla det. Här är en kort lista över dem:

    • Det är nödvändigt att antalet nedladdningar visas någonstans i adminpanelen, med möjlighet att sortera - hur många som laddades ner per dag, per vecka, månad, år, totalt
    • Det skulle vara önskvärt att kunna se grafer/diagram över filnedladdningar i förhållande till varandra
    • Det vore önskvärt att kunna se grafer/diagram över filnedladdningar över tid
    • Det är lämpligt att föra statistik över när filen senast laddades ner
    • Möjligheten att visa information bredvid länken om hur många gånger filen laddades ner, samt dess storlek och datum för nedladdning för användaren som just ska ladda ner den. Tja, eller inte dra tillbaka - på begäran av administratören
    • Möjligheten att infoga koden som är ansvarig för detta med hjälp av en separat knapp i postskrivpanelen TinyMCE-redaktör(Jag gillar inte att använda quicktags)
    • Möjlighet att begränsa nedladdningshastigheten (för säkerhets skull)
    • Att bifoga en uppladdningsfunktion till detta plugin (ladda upp filer till servern) - tvärtom, jag gav inte upp. FTP fungerar bra för mig också. Men om det inte stör för mycket, låt det stanna
    • Det skulle vara trevligt att kunna bifoga en snygg knapp till nedladdningslänken - även om det för mig räcker att skriva class="button"

    ABAP

    Nedladdning fil!

    • Det skulle vara bra om han räknade antalet nedladdningar inte bara från sin webbplats, utan helt enkelt från länken
    • Möjlighet att förbjuda direkt nedladdning fil utan att visa var den är på servern.

    Här är en liten lista.

    Recension

    Efter att vi har bestämt oss för de tekniska specifikationerna kommer vi att börja överväga vad som direkt erbjuds oss.

    1. Ladda ner Counter 1.2 plugin, laddas ner här.

    Ursprungligen var pluginsidan lokaliserad, men författaren har inte stött den på mer än 4 år. Vi skapar en annan mapp för det i plugins-katalogen åt mig - download-counter, och släpper båda filerna där. Som ett resultat - var skulle du tänka? — inställningarna för den visas i journalerna. Mycket original, men ok.

    Låt oss gå in och skriva sökvägen till filen download-manager.php (jag gillar verkligen inte att kasta något nonsens rakt in i roten). Och låt oss se vad vi har. Ladda upp filen, kontrollera om den är nedladdad i manuellt läge, om du anger en direktlänk i webbläsaren, ange sökvägen i plugin-programmet för att skapa en räknare. I teorin bör ett ID skapas, som sedan måste infogas överallt. Men ingenting fungerade - det ger felet "Fel - Det gick inte att spara inspelningen." Tja, ok, vi övertalade, vi överför det till roten download-manager.php - igen ingenting, samma fel. Nåväl, åt helvete med dig, guldfisk, det räckte inte för mig att fortfarande förstå plugins som författaren inte gav upp. Dessutom är funktionaliteten praktiskt taget noll.

    2. Ladda ner plugin för Counter Advanced 1.1, laddad ned.

    Jag ska genast säga att det inte riktigt fungerade för mig heller, så du kan läsa om dess installation och konfiguration endast av akademiskt intresse. I huvudsak är detta samma plugin, endast något modifierad. Tack gode gud, även om instruktionerna inte har översatts kan du läsa dem normalt och inte försöka förstå vad översättaren menade. Förresten, i adminpanelen verkar det vara ett helt annat plugin, som erbjuder uppdatering (ja, vad fan). I likhet med det tidigare pluginet var dess sida lokaliserad, och på samma sätt har författaren inte stött det på mer än 4 år. I analogi skapar vi en annan mapp för den i plugins-katalogen, min är nedladdningsräknare och vi kastar alla filer där. Inställningarna ser naturligtvis rikare ut, även om nedladdningshastigheten är begränsad för alla filer samtidigt och inte är inställd för var och en. Var är filen download-manager..php (glöm inte namnet på filen i slutet, men jag gissade rätt första gången var alla nedladdningar finns, vilket störtade mig i fruktansvärd häpnad. Som det visade sig senare, Jag gissade namnet på katalogen där ladda ner nedladdningar, här fungerade min logik 100% identiskt med författaren till plugin.

    Vi lägger till namnen på de mappar som vi har på servern i nedladdningskatalogen (i inställningarna för "kategorier och kataloger") för att göra det lättare att välja sökväg till filerna. Om du inte lägger till dem måste du ladda ner allt till nedladdningsroten. Spara, du kan lägga till nedladdningar. Det här är ungefär vad vi får.

    Låt oss nu försöka infoga det i inlägget. Vi lägger till en länk, i den ändrar vi vår länk till koden, som utfärdas direkt i plugin-inställningarna. Och sedan... Fy fan! HTTP-fel 500 (internt serverfel): En oväntad situation inträffade medan servern försökte slutföra begäran. Tja, jag tänkte bara berätta hur man lägger till en räknare direkt i ett inlägg, tänk om till länken inuti för att få det att fungera

    ABAP

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

    då kan du visa en nedladdningsknapp - den är snett, verkligen. Så mycket för plugin, slösat bort din tid. Han för inte riktigt statistik, för vi kommer inte att ta reda på var felet är.

    Det här är exakt det plugin som ovan nämnda Download Counter Advanced föreslogs uppdateras till. Nåväl, föreslår han - och okej, låt oss ladda ner det och se. Plugin-programmet har inte heller uppdaterats på mer än 3 år, och vissa användare har till och med gjort korrigeringar av sin kod själva. Det är installerat ganska framgångsrikt, askesen i inställningarna inspirerar inte optimism. Förresten, bra gjort också, de gissade var de skulle placera inställningarna - inte sämre än i föregående fall. Vi lägger till räknare på inställningssidan, allt verkar visas som det ska.

    Låt oss se vad vi har lagt till i inlägget. Ja, det finns inga knappar. Åh, naturligtvis glömde jag precis där att allt är intuitivt. Låt oss titta på instruktionerna. Det är nödvändigt att konstruera en komplex struktur som består av kortkoder som , nedladdade , och samtidigt (förmodligen på grund av CNC) räknas det egentligen ingenting.

    Därför kommer vi inte att överväga det ytterligare, tillsammans med medföljande plugin Ladda ner Counter Chart, som visar information i grafisk form.

    Den skrevs av vår landsman, men tyvärr är allt den kan göra att visa antalet personer som laddat ner filen bredvid dess namn - det finns ingen statistik eller några andra godsaker. Men om du är en älskare av minimalism är det här vad du behöver. Glöm bara inte, det finns inga knappar, en kortkod som


    Gör-det-själv-nedladdningsräknare för WordPress

    du måste ange det manuellt. Det är väldigt bra att författaren beskrev allt i detalj, så jag behövde inte testa det på mig själv.

    Tja, om vi pratar om plugins skrivna av vårt folk, så kan vi inte låta bli att nämna en till. Dess stora fördel är att den låter dig räkna inte bara antalet filnedladdningar, utan också helt enkelt klicka på länkar - det spelar ingen roll om de leder till en fil eller bara till en annan sida. Eller till en fil på någon annans sida :) Han kommer också att räkna detta, eller snarare, teoretiskt sett borde han räkna det. Det är inte så bra med statistik heller, det finns inga knappar på redigeringspanelen och det finns inga begränsningar för nedladdningar heller. Men det är ändå intressant att se. Därför laddar vi ner och installerar. I princip finns det en ganska detaljerad beskrivning på författarens hemsida, så jag ska inte gå in på för mycket detaljer. Du måste alltid tänka på att om du behöver ställa in en räknare på en fil eller på en länk, ska du antingen använda en kortkod av typen eller infoga klassen class="count" i länken. Detta är naturligtvis irriterande, med en knapp skulle det vara mycket bekvämare. Men det mest irriterande är att jag efter alla ansträngningar inte kunde få det att fungera ordentligt - om en kortkod användes visades inte själva nedladdningslänken, och om en klass användes visades inte statistik på länkarna i admin panel. Skärmdumpar kan ses från författaren - om du gillar själva idén, prova den, kanske kommer du att lyckas.

    Verkligen väldigt enkelt. Inga kortkoder etc. krävs. Detta plugin tillhandahåller dock statistik endast för författaren, för besökare, bredvid länken till filen, visas den inte.

    Det bör dock noteras att detaljerad statistik förs över vem som laddat ner vilken fil och när. Det är dock inte särskilt bekvämt att använda.

    Inställningarna inkluderar följande:

    • Du kan ange katalogen från vilken filer kan laddas ner
    • Du kan ange vilka typer av filer som får laddas ned
    • Förhindra att filnedladdningar räknas som författare
    • Ställ in intervallet i sekunder under vilket upprepade klick på en länk från samma IP endast räknas en gång
    • Begränsa antalet filer som kan laddas ner från en IP per dag
    • Använd någon form av mellansida med information om att nedladdningen ska börja nu

    Allt detta fungerar dock bara om du antingen (hur skulle jag uttrycka det enklare...) har behörighet att redigera .htaccess-filen, eller om du anger länken direkt genom att infoga den i

    Men eftersom det inte hade möjlighet att visa statistik för användare, och jag inte ville komma ihåg typen av länk, slutade jag överväga det vid det här laget, och bestämde mig för att återvända endast om de andra plugins i kön inte kunde lösa uppgiften.

    När det gäller att visa information är detta plugin väldigt likt det som diskuterades i föregående stycke. Det skiljer sig genom att det låter dig se statistik separat veckovis, månadsvis, för vilken period som helst, och helt enkelt topp 10. När det gäller dess kapacitet är den mycket eländigare, det finns ingen statistik på den senaste nedladdningen eller på en specifik fil, för att inte tala om möjligheten att införa begränsningar för nedladdning av filer. Det finns ingen tydlig dokumentation alls. Jag fick intrycket att detta bara var något slags missförstånd och inte ett plugin. Jag vill inte ens ge skärmdumpar, men för att vara objektiv kommer jag ändå att ge dem, författarens.

    Nåväl, här är vi vid något mer eller mindre värdigt. Nästan en halv miljon nedladdningar - det säger något. Den officiella sidan för pluginet finns. För att infoga en fil i ett inlägg måste du använda pilen ovanför den visuella redigeraren (ikonen i sig visas inte i den)

    Och i fönstret som visas, välj önskad fil (detta är ett exempel om den redan har laddats upp via FTP)

    Klicka sedan på knappen "Spara ny nedladdning".

    och gå till nästa skärm, välj nedladdningsformat och klicka på Sätt in i posta. Det är möjligt att ingenting kommer att hända. Insticksprogrammet är något problematiskt med senaste versionerna WordPress. Därför måste du dessutom klicka på länken Visa nedladdningar

    Och sedan, efter att först ha valt nedladdningsformatet, klicka på länken Infoga mittemot den exakta filen som måste infogas.

    Varefter motsvarande kortkod gillar

    ABAP

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

    Insticksprogrammet kräver fin manuell konfiguration, men ingen WYSIWYG tillhandahålls. Det som är bra är att du bara behöver ställa in den en gång. Detaljerad dokumentation finns hos författaren.

    Här är ett exempel på inställningar:

    ABAP

    (titel)

    < ahref= "(url)" title="Nedladdat (träffar,"ни разу","1 раз","% раза"}">{title}!}

    Det bör noteras att deklinationer inte stöds, dvs. om filen har laddats ner 21 gånger, och du har "raza" i din mall, kommer det att låta något oryskt.

    Och här är alternativet med knappen:

    ABAP

    - (beskrivning), (storlek), Uppladdad (datum,"Y-m-d"), Nedladdade (träffar) gånger

    < ahref= "(url)" title="Nedladdat (träffar,"ни разу","1 раз","% раза"}">!} - (beskrivning), (storlek), Uppladdad (datum,"Y-m-d"), Nedladdade (träffar) gånger

    Ser ut så här:

    Nåväl, efter lite modifiering började min se ut så här (utan knappar ännu):

    Linjekod:

    ABAP

    (filetype_icon) (titel) (Filstorlek: (storlek), Uppladdad: (datum,"d.m.Y"), Nedladdade (träffar) gånger)
    (beskrivning)

    Listan över möjligheter är ganska bred:

    • Du kan ladda upp filer antingen genom att använda den (genom att klicka på pilen), eller ange platsen där de finns, om de laddades upp tidigare via FTP kan du helt enkelt ange URL:en
    • Döljer den verkliga platsen för filen, du kan ersätta alla nödvändiga URL-kombinationer
    • Du kan använda nedladdningsknappen, inklusive din egen
    • Nedladdningar av administratören och alla onödiga IP-adresser som ingår i listan över diskuteslutningar beaktas inte.
    • Ska jag räkna upprepade nedladdningar inom en viss tid från samma IP?
    • Du kan ställa in flera format - med en bild, med en räknare, utan en räknare, etc., och använda vart och ett av dem i lämplig situation
    • Det finns en uppladdning av nedladdningsloggen som en csv-fil

    Om någon mp3- eller videofil laddas upp måste du ange för dem om det är tvångsnedladdning eller inte. Om tvinga - sedan genom att klicka på den, kommer den att laddas ner, om du inte markerar rutan - spela, sedan spara - högerklicka. Jag skulle vilja notera att filer som laddas upp med dess hjälp inte placeras där din speciella katalog för filer skapades, utan i wp-innehållet/uppladdningar/nedladdningar/ skapat av den - du måste komma ihåg detta, liksom det faktum att när du raderar dem från statistik - filer raderas också fysiskt från servern. Med de som laddas upp via FTP är allt OK. Plus, om du infogar en länk i olika inlägg till samma fil, så förstod jag inte om det skulle sammanfatta dem. Tyvärr stöder den inte några nedladdningsbegränsningar, förutom att du kan förbjuda nedladdning för alla utom registrerade användare. När du vill visa namnet på en fil i webbläsarens nedersta rad, eller behöver ändra den till dess ID, måste du komma ihåg att gå till inställningar->permalänkar och spara konfigurationen där så att allt skrivs rätt i . htaccess - utan detta kommer filerna inte att laddas ner!

    Statistik visas på tre ställen samtidigt - i konsolen, i information om filer och i nedladdningsloggar. Detta skapar vissa besvär, till exempel när du behöver se när en fil laddades ner senast, men du kan ladda ner statistik som en csv-fil och sedan reda ut den i Excel. Med tanke på att Excel har diaboliska möjligheter för att konstruera de nödvändiga tabellerna och diagrammen, så kanske detta inte är dåligt. Men jag tror att skärmdumparna kommer att säga mer:

    Nåväl, en skärmdump av själva loggen:

    Samtidigt är ett stort plus att en widget med statistik som denna dyker upp i konsolen:

    Generellt sett kan vi säga att efter lite konfiguration så gör plugin sitt jobb bra.

    Detta plugin skrevs av samma författare som WP-Polls plugin, som jag till exempel använder på denna sida. Även om den åtnjuter, i jämförelse, en storleksordning mindre popularitet. Men låt oss se om det är välförtjänt. All dokumentation finns på författarens hemsida. I sin kärna är plugin helt identisk med den tidigare - mallen är skriven på exakt samma sätt, det finns inga begränsningar för nedladdning, förutom för registrerade eller oregistrerade användare, och du måste också använda en kortkod som

    ABAP

    [downloadid="7592"]

    Tja, på de andra punkterna:

    • Du kan ladda upp filer med den (upp till två MB, eller vad du har angett i php.ini), och ange var de finns, om de laddades upp tidigare via FTP kan du helt enkelt ange URL:en
    • Döljer den verkliga platsen för filen, men det är inte möjligt att ersätta någon nödvändig URL-kombination, det finns bara ett fåtal fasta alternativ, varav det viktigaste inte fungerade för mig
    • Kan konfigureras för att visa information för besökare om storleken på filen, hur många gånger den laddades ner, när den laddades ner
    • Du kan visa en ikon för motsvarande filtyper
    • Du kan nollställa räknaren eller ställa in önskat värde

    Det finns dock vissa skillnader. För det första finns det ingen knapp i den visuella editorn med vilken du kan infoga en kortkod. Eller snarare, det finns en knapp, men för att kunna använda den måste du först lägga till en räknare för filen i plugininställningarna, och sedan med den här knappen kommer räknarens ID att läggas till direkt i inlägget. För det andra finns det bara en mall, och det kommer inte att vara möjligt att visa olika information för olika filer. Bland fördelarna med statistik - den visar när filen laddades ner senast, annars finns det bara nackdelar - ingen uppladdning till en csv-fil, ingen visning av vem som laddat ner (ingen IP), ingen distribution efter datum.

    Men ikonerna är snyggare (jag la senare till dem i det tidigare pluginet). Resultatet av hans arbete ser ut så här:

    När en post tas bort från databasen frågar den också om själva filen ska tas bort eller lämnas. Men sett till helheten av dess egenskaper gillade jag den mindre än den föregående - åtminstone eftersom filen måste infogas separat utanför posten, dock har den inga speciella nackdelar - valet mellan dem är en fråga om smak, den första har fler alternativ, mer detaljerad statistik, den andra - lite bekvämare (om än sämre) statistik och färre möjligheter.

    Tungt artilleri gick till aktion. Insticksprogrammet är mestadels russifierat och är bara en nedladdningshanterare, inte en räknare. Det är möjligt att begränsa nedladdningshastigheten och antalet nedladdningar per person och dag.

    Men jag skulle säga att vissa av funktionerna i detta plugin är onödiga, och de som behövs enligt statistiken räcker inte. Det finns många inställningar, nedladdningswidgetar, ett komplext synkroniseringssystem, ett system för att visa mp3-taggar, visa flv-filer, organisera en mini-fillagring, visa alla filer som listas på sidan i början eller slutet av inlägget, etc., etc.

    Jag vill inte ens visa skärmdumpar av alla inställningar.

    Men med allt detta, för att visa mallen vackert i inlägget, var jag tvungen att redigera stilfilen i den, vilket minskade bredden. Plus, för att visa standardmallen måste du använda knappen efter att ha infogat kortkoden

    Ange namnet på mallen i koden manuellt. Någon slags konflikt med det ryska namnet. Förresten, det ser ut så här (jag ger tre alternativ för mallar):

    Det räknas - genom ett stubbdäck (tja, eller så räknas det inte mer än en nedladdning från en IP, jag vet inte). Statistiken är lite mindre än helt lik pluginet som just diskuterats ovan.

    I allmänhet lämnades jag med intrycket att han var frisk, men dum. Lämplig för någon form av fillagring, och även då endast om den kombineras med någon annan plugin. Jag tittade på den och tog ner den.

    Ärligt talat, när jag läste dess beskrivning tänkte jag - det här är det jag behöver!

    Räknare, lösenordsskydd, knappinsättningsbar kortkod, redigerbar knapp, etc.

    Och det ser ut så här (han citerade två tre mallar som används på en gång):

    Men för att lägga till en fil måste du först lägga till en räknare för den i plugins. För det andra finns det praktiskt taget ingen statistik alls.

    För det tredje kan du inte ställa in utdata för att visa filstorleken för användaren. För det fjärde finns det ingen gräns för nedladdningshastigheten, det finns bara lösenordsskydd för filen. Mallar kan inte redigeras. Och en stor inskription som erbjuder att köpa premiumversionen för 45 dollar. Tja, i allmänhet förstår du. Allt gott är för pengarna. Inaktiverade den och rev den. Och vackra ramar, knappar osv. – Jag skriver själv ner det i stilarna när jag vill.

    Sammanfattning

    Installera på standard sätt (genom att kopiera till katalogen wp-content/plugins/download-monitor/, låt den uppdateras, ersätt alla ikoner med ikoner från arkivet i katalogen wp-content/plugins/download-monitor/img/filetype_icons/ och aktivera.

    I framtiden, om jag kommer runt, funderar jag på att sätta länkarna i snygga ramar med css3, som jag med största sannolikhet kommer att skriva om också. Håll utkik :)

    Uppd. Nu har författaren omarbetat WordPress Download Monitor-plugin och skapat en helt annan version än den ursprungliga. Jag testade det, men jag gillade det mycket mindre på grund av att mallen för formuläret för hur nedladdningslänken kommer att se ut inte längre är så lätt att redigera. Författaren beslutade att färdiga förinstallerade vyer skulle räcka. Till exempel, om i nedladdningsmenyn, sedan inställningar, välj önskad vy från sex förinställda, klicka på spara

    När du sedan väljer det andra alternativet får du något sånt här:

    De där. på ny version Det fungerar inte att använda raden jag gav i beskrivningen, men du måste skriva en speciell PHP-fil som skulle beskriva denna utdatamall. Men det tråkigaste är inte ens detta - utan det faktum att denna php-fil, om den placeras i katalogen med plugin-programmet, kommer att skrivas över varje gång plugin-programmet uppdateras. Och om du lägger det i en katalog med ett tema, då när du ändrar temat (även om detta, naturligtvis, händer mycket mindre ofta). Men hur som helst är det en ganska arbetskrävande uppgift att skriva den och än så länge har jag ingen lust att göra det. Så det enda pluset med det uppdaterade pluginet är

    Jag bestämde mig för att se hur många gånger ett av mina skript laddades ner från webbplatsen. För att göra detta bestämde jag mig för att skriva en filnedladdningsräknare för webbplatsen. Det finns många implementeringar av detta problem på Internet, men ändå, kolla in min lösning.

    Logiken bakom nedladdningsräknaren är ganska enkel. För att implementera det kommer vi att använda min favorit ajax. Vi bifogar ett samtal via ajax till knappen när klickhändelsen inträffar php-fil disken. I php bearbetas ajax-förfrågan och det totala antalet lopp skrivs till en textfil. Efter en lyckad inspelning returneras ett svar med en total nedladdningsräknare och användaren omdirigeras till länken för att ladda ner filen (filen laddas ner). Detta är en så enkel logik. Nu börjar vi implementera den. Låt oss skapa en nedladdningsbar fil test.zip i förväg. Låt oss koda knappen och visa tävlingsräknaren.

    Ladda ner fil Antal lopp:

    Vi skapade en knapp med id="btnSend" , vi kommer att visa räknaren i ett spann med id="countView" , och vi kommer att lagra en länk till den nedladdade filen i data-download-attributet

    Låt oss nu bifoga en klickhanterare till knappen. Här kommer vi redan att använda js och jquery. Du kan läsa om hur du implementerar clik med jquery. Men innan vi installerar klickhanteraren kommer vi ajax att komma åt filen count.php, som kommer att innehålla allt räknarens arbete. Du kan läsa mer om ajax dataöverföring. Detta är nödvändigt för att mata ut från filen där räknaren skriver antalet nedladdningar som redan gjorts och visa dem i ett spann med id="countView"

    /*få det aktuella antalet nedladdningar*/ $(document).ready(function())( //förbjud cachning av ajax-förfrågan //annars misslyckas räknaren $.ajaxSetup((cache: false)); var html ; $.ajax (( //hur vi kommer att överföra datatyp: "GET", //där vi kommer att överföra url: "count.php", //vilken data vi kommer att överföra data: (flagga: 2), // händelse efter att ha mottagit ett svar från count.php success : function(data)( html=data; //visa det aktuella antalet nedladdningar $("#countView").html(html); ) )); /*bifoga en händelse till knappen för nedladdningsfil*/ var clickevent=false; //click test flag //click handler $("#btnSend").click(function())( if(!clickevent)( $.ajax(( //how vi kommer att överföra datatyp: "GET", //där vi kommer att överföra den url: "count.php", //vilken data skickar vi data: (flagga: 1), //event innan vi skickar ajax beforeSend: function( ))( //om knappen klickades sedan true clickevent=true; ), //händelse efter att ha mottagit svaret, //receive the data in data success: function(data)( //efter att ha slutfört åtgärderna tillåter vi det igen //för att bearbeta klicka på knappen clickevent=false; html=data; //visa en ny räknare $("#countView").html(html); //hämta länken från data-download //redirect till nedladdningslänken, ladda ner filen window.location.href = $("#btnSend").data("download"); ) )); ) return false;//förbjud bearbetning av klickhändelsen )); ));

    För att förhindra att skicka-knappen trycks ned av misstag igen, introducerade jag clickevent-flaggan i skriptet. Tills svaret från count.php återkommer med uppdaterad räknardata, kommer det att vara förbjudet att klicka på knappen. Jag tror att kodens funktion efter att ha klickat på knappen är mer eller mindre tydlig. Efter att ha klickat på nedladdningsknappen överförs data till count.php-filen, där den bearbetas och uppdaterad räknardata returneras, en omdirigering till nedladdningslänken sker och, följaktligen, filen laddas ner.

    Låt oss nu titta på kärnan i vårt skript, nämligen filen count.php.

    Funktion clearInt ($date)( //reducera datum till ett icke-negativt tal returnerar abs((int)$date); ) if($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest") ( //kontrollera vilken flagga som var mottagen if (clearInt($_GET["flagga"]==1)) ( //öppna filen för att läsa $f=fopen("mycount.txt","a+"); //stänger åtkomst till filen från andra program flock($ f,LOCK_EX); //få räknarvärdet från filen $count=fread($f,100); //lägg till räknaren @$count++; //skriv över filen ftruncate($f,0) ; //skriv en ny räknareläsning fwrite ($f,$count); //stäng filen fclose($f); //returnera värdet echo $count; ) if(clearInt($_GET["flagga"]= =2)) ( $c=fopen(" mycount.txt","a+"); flock($c,LOCK_EX); $festc=fread($c,100); fclose($c); //retur värde echo $festc;))

    Här tänker jag samma sak, allt är enkelt. Om flagga 1 kommer, så skriver vi om räknaren. Om flagga 2 kommer, returneras helt enkelt data om antalet nedladdningar. Allt annat tycker jag framgår av kommentarerna i koden.

    Joomla nedladdningsräknare

    Jag bestämde mig för att bifoga en liknande disk till ett av mina Joomla-projekt. I teorin måste du naturligtvis skriva antingen en separat modul eller integrera koden i styrenheten för com-innehållskomponenten, så att räknardata inte skrivs till en fil, utan till databasen och för varje artikel separat. Men det finns ingen tid för sådan utveckling och jag löste problemet enklare. Jag behövde räknaren för en sida. Jag tog filen count.php och överförde den till Joomla-mallen, som för närvarande är ansluten (i roten av webbplatsmallarna/din_mall). Glöm inte att infoga koden definierad("_JEXEC") eller dö längst upp i count.php. (detta är för Joomla). Vi infogar nedladdningsknappen på sidan vi skapar, och js-koden kan också bäddas in i sidan, eller kopplas som en separat fil. Till exempel har jag den som en separat fil (den finns i mallens js-mapp). I själva mallen, i rubriken, sker kopplingen genom kod

    
    Topp