Oprettelse af en filoverførselstæller ved hjælp af PHP og MySQL. Installation af en downloadtæller - gennemgang af plugins til WordPress Fildownloadtæller php

På mange websteder kan du se links til at downloade filer. For eksempel poster produktionsvirksomheder instruktioner for et bestemt produkt på deres officielle sider. Derudover tilbyder softwareudviklere også at downloade deres program gratis, hvilket giver brugeren mulighed for at blive fortrolig med dets funktioner og betjening.

Når du gør en fil tilgængelig til gratis download, er det vigtigt at vide, hvor mange gange den er blevet downloadet. Dette er først og fremmest nødvendigt for statistikker, hvis analyse vil hjælpe med at bestemme nytten af ​​oplysningerne for slutbrugeren.

Hvordan indstiller man en downloadtæller på et WordPress-websted?

Der er ingen måde at se disse statistikker blandt WordPress-værktøjerne. Derfor vil vi bruge en tredjepartsløsning - Kama Click Counter plugin.

Kama Click Counter plugin

Det gratis Kama Click Counter-plugin giver alle de nødvendige værktøjer til nøjagtigt at tælle antallet af downloads af en bestemt fil. Så for det første skal den installeres og aktiveres. For eksempel vil vi på postsiden vise et link til en pdf-fil, som vi tæller antallet af downloads til. Det skal bemærkes, at filer uploades til webstedet ved hjælp af standard WordPress Media Library-metoder (Media -> Tilføj ny). Dernæst skal du åbne indlægget eller siden til redigering. I indholdsdelen skal du placere markøren på det sted, hvor linket til filen vil blive placeret, og klikke på knappen, der vises i den visuelle editor-værktøjslinje.

I et pop op-vindue vil plugin'et bede dig om at vælge den tidligere downloadede fil. For at gøre dette skal du trykke på knappen med forstørrelsesglasikonet.

I mediefilbiblioteket skal du vælge den ønskede fil og klikke på knappen Vælg fil.

Som følge heraf vil en særlig kortkode blive indsat i indholdsdelen af ​​indlægget eller siden, som tjener til at vise et link til at downloade filen.

Efter at have opdateret materialet (Opdater-knappen), kan du gå til webstedet for at se det.

Pluginnet er også i stand til at vise downloadstatistik i brugerdelen af ​​webstedet – i en widget. Bemærk, at plugin'et som standard ikke viser specifikke tal i widgetten om, hvad der blev downloadet og hvor mange gange. Kun en liste over de oftest downloadede filer vises. For at gøre dette skal du gå til admin-sektionen Udseende -> Widgets og trække KSS:Top Downloads-widgetten til den ønskede placering i sidebjælken.

Du kan se, at widgetten har flere tilgængelige muligheder, der giver dig mulighed for at ændre listen.

Her kan du indstille følgende grundlæggende parametre:

  • widget titel (Titel felt);
  • antal outputfiler på listen (hvor mange links skal vises?);
  • sortering af resultaterne (hvordan sorteres resultatet?);
  • tilpasning af skabelonens udseende (skabelon- og CSS-blokke i skabelonen).

Et særligt træk ved plugin er dets fleksible skabelontilpasning. Her kan du bruge såkaldte tags, i stedet for hvilke denne eller hin information vil blive vist.

Efter at alle widgetindstillinger er blevet gennemført og gemt (Gem-knap), kan du se resultatet på hjemmesiden.

Det næste spørgsmål, som jeg for nylig blev interesseret i, da jeg satte mit simple forfatterprojekt op, var spørgsmålet om, hvordan man tæller antallet af downloads af en bestemt fil, der er postet her. Det var mest logisk at antage, at dette kræver et andet plugin, en form for downloadmanager, eller hvad der er mere simpelt - downloadtæller. Efter at have gennemsøgt internettet, viste det sig, at der som sædvanligt er en vogn og en lille vogn med disse plugins. Men igen, der er ingen anmeldelser af dem. Det er absolut ikke klart, hvad jeg skal vælge, og som sædvanlig var jeg nødt til at teste alt på mig selv. Og baseret på testresultaterne blev denne anmelder oprettet. Det tog lang tid at skrive, og målet var ikke grundigt at teste alle plugins, der blev givet med en fuld gennemgang af deres indstillinger, så du vil ikke finde detaljerede skærmbilleder af hver, men der vil være nøgleindstillinger. Jeg ville slet ikke tale om nogle af dem - de var så dumme, men da jeg så på dem, var det en skam ikke at skrive noget som helst.

Introduktion.

Så opgaven var at tælle antallet af downloads af en bestemt fil ved at indstille en downloadtæller for WordPress. Ved nærmere undersøgelse faldt det i flere delopgaver, eller rettere, ønsker om et plugin, der ville opfylde det. Her er en kort liste over dem:

  • Det er nødvendigt, at antallet af downloads vises et sted i admin panelet, med mulighed for at sortere - hvor mange blev downloadet pr. dag, pr. uge, måned, år, i alt
  • Det ville være ønskeligt at kunne se grafer/diagrammer over fildownloads i forhold til hinanden
  • Det ville være ønskeligt at kunne se grafer/diagrammer over fildownloads over tid
  • Det er tilrådeligt at føre statistik over, hvornår filen sidst blev downloadet
  • Muligheden for at vise information ved siden af ​​linket om, hvor mange gange filen blev downloadet, samt dens størrelse og datoen for download for den bruger, der lige skal til at downloade den. Nå, eller ikke at trække sig tilbage - efter anmodning fra administratoren
  • Muligheden for at indsætte koden, der er ansvarlig for dette ved hjælp af en separat knap i postskrivepanelet i TinyMCE-editoren (jeg kan ikke lide at bruge quicktags)
  • Mulighed for at begrænse downloadhastigheden (bare i tilfælde af)
  • At vedhæfte en uploadfunktion til dette plugin (uploade filer til serveren) - tværtimod gav jeg ikke op. FTP fungerer også godt for mig. Men hvis det ikke forstyrrer for meget, så lad det blive
  • Det ville være rart at kunne vedhæfte en fin knap til downloadlinket - selvom det for mig er nok at skrive class="button"

ABAP

Download fil!

  • Det ville være godt, hvis han talte antallet af downloads ikke kun fra sin hjemmeside, men blot fra linket
  • Muligheden for at forbyde direkte download af en fil uden at vise, hvor den er placeret på serveren.

Her er en lille liste.

Anmeldelse

Efter vi har besluttet os for de tekniske specifikationer, vil vi begynde at overveje, hvad der er direkte tilbudt os.

1. Download Counter 1.2 plugin, downloadet her.

Til at begynde med var plugin-siden lokaliseret, men forfatteren har ikke understøttet den i mere end 4 år. Vi opretter en anden mappe til det i plugins-mappen for mig - download-tæller, og slipper begge filer der. Som et resultat - hvor ville du tænke? — indstillinger for det vises i optegnelserne. Meget original, men ok.

Lad os gå ind og skrive stien til filen download-manager.php (jeg kan virkelig ikke lide at smide noget nonsens lige ind i roden). Og lad os se, hvad vi har. Vi uploader filen, kontrollerer om den er downloadet manuelt, hvis du indtaster et direkte link i browseren, skal du indtaste stien i plugin'et for at oprette en tæller. I teorien burde der oprettes et ID, som så skal indsættes overalt. Men intet virkede - det giver fejlen "Fejl - Kan ikke gemme optagelsen." Nå, ok, vi overtalte, vi overfører det til root download-manager.php - igen ingenting, samme fejl. Nå, for helvede med dig, guldfisk, det var ikke nok for mig at stadig forstå de plugins, som forfatteren ikke gav op på. Desuden er funktionaliteten praktisk talt nul.

2. Download Counter Advanced 1.1 plugin, downloadet.

Jeg vil med det samme sige, at det heller ikke rigtig virkede for mig, så du kan kun læse om dets installation og konfiguration af akademisk interesse. I det væsentlige er dette det samme plugin, kun lidt ændret. Gudskelov, selvom instruktionerne ikke er blevet oversat, kan du læse dem normalt og ikke prøve at forstå, hvad oversætteren mente. Forresten, i admin panelet ser det ud til at være et helt andet plugin, der tilbyder at opdatere (ja, hvad pokker). I lighed med det forrige plugin blev dets side lokaliseret, og på samme måde har forfatteren ikke understøttet det i mere end 4 år. I analogi opretter vi en anden mappe til det i plugins-mappen, min er download-tæller, og vi smider alle filerne der. Indstillingerne ser selvfølgelig rigere ud, selvom downloadhastigheden er begrænset for alle filer på én gang og ikke er indstillet til hver enkelt. Hvor er filen download-manager..php (glem ikke navnet på filen til sidst, men jeg gættede rigtigt første gang, hvor alle downloads er, hvilket kastede mig ud i frygtelig forbløffelse. Som det viste sig senere, Jeg gættede navnet på den mappe, hvori uploader downloads, her fungerede min logik 100% identisk med forfatteren af ​​plugin'et.

Vi tilføjer navnene på de mapper, som vi har på serveren, i downloadbiblioteket (i indstillingerne for "kategorier og mapper") for at gøre det nemmere at vælge stien til filerne. Hvis du ikke tilføjer dem, bliver du nødt til at downloade alt til downloadroden. Gem, du kan tilføje downloads. Det er nogenlunde, hvad vi får.

Lad os nu prøve at indsætte det i indlægget. Vi tilføjer et link, i det ændrer vi vores link til koden, som udstedes direkte i plugin-indstillingerne. Og så... Fuck dig! HTTP-fejl 500 (intern serverfejl): Der opstod en uventet situation, mens serveren forsøgte at fuldføre anmodningen. Nå, jeg skulle lige fortælle dig, hvordan du tilføjer en tæller direkte til et indlæg, hvad nu hvis til linket inde at få det til at fungere

ABAP

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

så kan du vise en downloadknap - den er virkelig skæv. Så meget for plugin, spildte din tid. Han fører ikke rigtig statistik, for vi finder ikke ud af, hvor fejlen er.

Dette er præcis det plugin, som ovennævnte Download Counter Advanced blev foreslået opdateret til. Nå, foreslår han - og okay, lad os downloade det og se. Pluginnet er heller ikke blevet opdateret i mere end 3 år, og nogle brugere lavede endda rettelser til dets kode selv. Det er installeret ganske vellykket, indstillingernes askese inspirerer ikke optimisme. Forresten, godt gået også, de gættede, hvor de skulle placere indstillingerne - ikke værre end i det foregående tilfælde. Vi tilføjer tællere på indstillingssiden, alt ser ud til at blive vist, som det skal.

Lad os se, hvad vi har tilføjet til indlægget. Ja, der er ingen knapper. Åh, selvfølgelig glemte jeg lige der, at alt er intuitivt. Lad os se på instruktionerne. Det er nødvendigt at konstruere en kompleks struktur bestående af shortcodes som , downloadet , og samtidig (sandsynligvis på grund af CNC'en) tæller det ikke rigtig noget.

Derfor vil vi ikke overveje det yderligere, sammen med det medfølgende plugin Download Counter Chart, som viser information i grafisk form.

Den er skrevet af vores landsmand, men desværre kan den kun vise antallet af personer, der har downloadet filen ved siden af ​​dens navn - der er ingen statistik eller andre godbidder. Men hvis du er en elsker af minimalisme, er det dette, du har brug for. Bare glem ikke, der er ingen knapper, en kortkode som


DIY downloadtæller til WordPress

du bliver nødt til at indtaste det manuelt. Det er meget godt, at forfatteren beskrev alt i detaljer, så jeg behøvede ikke at teste det på mig selv.

Nå, hvis vi taler om plugins skrevet af vores folk, så kan vi ikke lade være med at nævne en mere. Dens store fordel er, at det giver dig mulighed for ikke kun at tælle antallet af fildownloads, men også blot klik på links - det er lige meget, om de fører til en fil eller bare til en anden side. Eller til en fil på en andens side :) Han vil også tælle dette, eller rettere, teoretisk burde han tælle det. Med statistik er det heller ikke helt så fantastisk, der er ingen knapper på redigeringspanelet, og der er heller ingen begrænsninger for downloads. Men det er stadig interessant at se. Derfor downloader og installerer vi. I princippet er der en ret detaljeret beskrivelse på forfatterens hjemmeside, så jeg vil ikke gå for meget i detaljer. Du skal altid huske på, at hvis du skal sætte en tæller på en fil eller på et link, skal du enten bruge en type shortcode eller indsætte klassen class="count" i linket. Dette er selvfølgelig irriterende; med en knap ville det være meget mere praktisk. Men det mest irriterende er, at jeg efter alle anstrengelserne ikke kunne få det til at fungere tilstrækkeligt - hvis der blev brugt en shortcode, blev selve downloadlinket ikke vist, og hvis der blev brugt en klasse, kom der ikke statistikker over linksene frem i admin panel. Skærmbilleder kan ses fra forfatteren - hvis du kan lide selve ideen, så prøv den, måske vil du lykkes.

Virkelig meget simpelt. Ingen shortcodes osv. påkrævet. Dette plugin giver dog kun statistik for forfatteren; for besøgende vises det ikke ved siden af ​​linket til filen.

Det skal dog bemærkes, at der føres detaljeret statistik over, hvem der har downloadet hvilken fil og hvornår. Det er dog ikke særlig praktisk at bruge.

Indstillingerne omfatter følgende:

  • Du kan angive den mappe, hvorfra filer kan downloades
  • Du kan angive de filtyper, der er tilladt at downloade
  • Undgå at tælle fildownloads som forfatter
  • Indstil det interval i sekunder, hvor gentagne klik på et link fra den samme IP kun tælles én gang
  • Begræns antallet af filer, der kan downloades fra én IP om dagen
  • Brug en form for mellemside med oplysninger om, at overførslen vil begynde nu

Alt dette virker dog kun, hvis du enten (hvordan skal jeg sige det mere enkelt...) har tilladelse til at redigere .htaccess-filen, eller hvis du angiver linket direkte ved at indsætte det i

Men da det ikke havde mulighed for at vise statistik for brugere, og jeg ikke ønskede at huske typen af ​​link, holdt jeg op med at overveje det på dette tidspunkt, og besluttede kun at vende tilbage, hvis de andre plugins i køen ikke var i stand til at løse opgaven.

Med hensyn til visning af information er dette plugin meget lig det, der blev diskuteret i det foregående afsnit. Det adskiller sig ved, at det giver dig mulighed for at se statistikker separat ugentligt, månedligt, for enhver periode og blot top 10. Med hensyn til dens muligheder er den meget mere elendig; der er ingen statistikker om den sidste download eller på en specifik fil, for ikke at nævne muligheden for at indføre begrænsninger for download af filer. Der er slet ingen klar dokumentation. Jeg fik det indtryk, at dette bare var en form for misforståelse og ikke et plugin. Jeg vil ikke engang give skærmbilleder, men for at være objektiv, vil jeg stadig give dem, forfatterens.

Nå, her er vi ved noget mere eller mindre værdigt. Næsten en halv million downloads – det siger noget. Den officielle side for plugin er placeret. For at indsætte en fil i et indlæg skal du bruge pilen over den visuelle editor (selve ikonet vises ikke i det)

Og i vinduet, der vises, skal du vælge den ønskede fil (dette er et eksempel, hvis den allerede er blevet uploadet via FTP)

Klik derefter på knappen "Gem ny download".

og gå til næste skærmbillede, vælg downloadformatet og klik på Indsæt i post. Det er muligt, at der ikke sker noget. Pluginnet er lidt buggy med de nyeste versioner af WordPress. Derfor skal du desuden klikke på linket Vis downloads

Og derefter, efter først at have valgt downloadformatet, skal du klikke på linket Indsæt ud for den nøjagtige fil, der skal indsættes.

Hvorefter den tilsvarende kortkode gerne

ABAP

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

Pluginnet kræver fin manuel konfiguration, men der er ingen WYSIWYG. Det gode er, at du kun behøver at sætte det op én gang. Detaljeret dokumentation er tilgængelig hos forfatteren.

Her er et eksempel på opsætning:

ABAP

(titel)

< ahref= "(url)" title="Downloadet (hits,"ни разу","1 раз","% раза"}">{title}!}

Det skal bemærkes, at deklinationer ikke understøttes, dvs. hvis filen er blevet downloadet 21 gange, og du har "raza" i din skabelon, så vil den lyde noget u-russisk.

Og her er muligheden med knappen:

ABAP

- (beskrivelse), (størrelse), uploadet (dato,"Y-m-d"), downloadet (hits) gange

< ahref= "(url)" title="Downloadet (hits,"ни разу","1 раз","% раза"}">!} - (beskrivelse), (størrelse), uploadet (dato,"Y-m-d"), downloadet (hits) gange

Ser sådan ud:

Nå, efter nogle ændringer begyndte min at se sådan ud (uden knapper endnu):

Linjekode:

ABAP

(filetype_icon) (titel) (Filstørrelse: (størrelse), Uploadet: (dato,"d.m.Y"), Downloadet (hits) gange)
(beskrivelse)

Listen over muligheder er ret bred:

  • Du kan uploade filer enten ved at bruge det (ved at klikke på pilen), eller angive den placering, hvor de er placeret, hvis de blev uploadet tidligere via FTP, kan du blot angive URL'en
  • Skjuler den sande placering af filen, du kan erstatte enhver nødvendig URL-kombination
  • Du kan bruge download-knappen, inklusive din egen
  • Downloads fra administratoren og alle unødvendige IP-adresser, der er inkluderet på listen over tællerekskluderinger, tages ikke i betragtning.
  • Skal jeg tælle gentagne downloads inden for en vis tid fra den samme IP?
  • Du kan indstille flere formater - med et billede, med en tæller, uden en tæller osv., og bruge hver af dem i den passende situation
  • Der er en upload af download-loggen som en csv-fil

Hvis en mp3- eller videofil bliver uploadet, skal du angive for dem, om det er tvungen download eller ej. Hvis force - så ved at klikke på det, vil det blive downloadet, hvis du ikke markerer feltet - afspil, så gem - højreklik. Jeg vil gerne bemærke, at filer, der er uploadet med dens hjælp, ikke placeres der, hvor din specielle mappe til filer blev oprettet, men i wp-indholdet/uploads/downloads/ oprettet af det - du skal huske dette, samt det faktum, at når du sletter dem fra statistik - slettes filer også fysisk fra serveren. Med dem, der er uploadet via FTP, er alt OK. Plus, hvis du indsætter et link i forskellige indlæg til den samme fil, så forstod jeg ikke, om det ville opsummere dem. Desværre understøtter det ingen download-begrænsninger, bortset fra at du kan forbyde download til alle undtagen registrerede brugere. Når du vil vise navnet på en fil i browserens nederste linje, eller skal ændre den til dens ID, skal du huske at gå til indstillinger->permalinks og gemme konfigurationen der, så alt er skrevet korrekt i . htaccess - uden dette vil filerne ikke blive downloadet!

Statistikker vises tre steder på én gang - i konsollen, i information om filer og i downloadlogs. Det skaber visse gener, for eksempel når du skal se hvornår en fil sidst er downloadet, men du kan downloade statistik som en csv-fil og så sortere den fra i Excel. I betragtning af at Excel har djævelske evner til at konstruere de nødvendige tabeller og diagrammer, så er det måske ikke dårligt. Jeg tror dog, at skærmbillederne vil sige mere:

Nå, et skærmbillede af selve loggen:

Samtidig er et kæmpe plus, at en widget med statistik som denne dukker op i konsollen:

Generelt kan vi sige, at efter lidt konfiguration klarer plugin'et sit arbejde fint.

Dette plugin er skrevet af samme forfatter som WP-Polls plugin, som jeg f.eks. bruger på denne side. Selvom det i sammenligning nyder en størrelsesorden mindre popularitet. Men lad os se om det er fortjent. Al dokumentation kan findes på forfatterens hjemmeside. I sin kerne er pluginnet helt identisk med det forrige - skabelonen er skrevet på nøjagtig samme måde, der er ingen begrænsninger for download, undtagen for registrerede eller uregistrerede brugere, og du skal også bruge en kortkode som f.eks.

ABAP

[downloadid="7592"]

Nå, på de andre punkter:

  • Du kan uploade filer ved hjælp af det (op til to MB, eller hvad du nu har angivet i php.ini), og angive den placering, hvor de er placeret, hvis de blev uploadet tidligere via FTP, kan du blot angive URL'en
  • Skjuler den sande placering af filen, men det er ikke muligt at erstatte en nødvendig URL-kombination, der er kun nogle få faste muligheder, hvoraf den vigtigste ikke virkede for mig
  • Kan konfigureres til at vise information til besøgende om størrelsen af ​​filen, hvor mange gange den blev downloadet, hvornår den blev downloadet
  • Du kan vise et ikon for de tilsvarende filtyper
  • Du kan nulstille tælleren eller indstille den ønskede værdi

Der er dog nogle forskelle. For det første er der ingen knap i den visuelle editor, hvormed du kan indsætte en kortkode. Eller rettere sagt, der er en knap, men for at bruge den, skal du først tilføje en tæller for filen i plugin-indstillingerne, og med denne knap vil tællerens ID blive tilføjet direkte til indlægget. For det andet er der kun én skabelon, og det vil ikke være muligt at vise forskellige oplysninger for forskellige filer. Blandt fordelene ved statistik - det viser hvornår filen sidst blev downloadet, ellers er der kun ulemper - ingen upload til en csv-fil, ingen visning af hvem der har downloadet (ingen IP), ingen distribution efter dato.

Men ikonerne er smukkere (jeg tilføjede dem senere til det forrige plugin). Resultatet af hans arbejde ser således ud:

Når du sletter en post fra databasen, spørger den også, om selve filen skal slettes eller efterlades. Men i forhold til helheden af ​​dens egenskaber, så kunne jeg lide den mindre end den forrige - i hvert fald fordi filen skal indsættes separat uden for posten, dog har den ingen særlige ulemper - valget mellem dem er et spørgsmål om smag, den første har flere muligheder, mere detaljeret statistik, den anden - lidt mere bekvem (omend dårligere) statistik og færre muligheder.

Tungt artilleri gik i aktion. Pluginnet er for det meste russificeret og er kun en downloadmanager, ikke en tæller. Det er muligt at begrænse downloadhastigheden og antallet af downloads pr. person pr. dag.

Men jeg vil sige, at nogle af funktionerne i dette plugin er unødvendige, og de nødvendige ifølge statistikker er ikke nok. Der er en masse indstillinger, download-widgets, et komplekst synkroniseringssystem, et system til visning af mp3-tags, visning af flv-filer, organisering af en mini-fillagring, visning af alle de filer, der er anført på siden i begyndelsen eller slutningen af ​​indlægget, osv., osv.

Jeg vil ikke engang vise skærmbilleder af alle indstillingerne.

Men med alt dette, for at vise skabelonen smukt i indlægget, var jeg nødt til at redigere stilfilen i den, hvilket reducerede bredden. Plus, for at vise standardskabelonen, skal du bruge knappen efter at have indsat kortkoden

Indtast navnet på skabelonen i koden manuelt. En slags konflikt med det russiske navn. Forresten ser det sådan ud (jeg giver tre muligheder for skabeloner):

Det tæller - gennem et stubdæk (nå, eller det tæller ikke mere end én download fra en IP, jeg ved det ikke). Statistikken er lidt mindre end fuldstændig magen til det plugin, der netop er diskuteret ovenfor.

Generelt sad jeg tilbage med det indtryk, at han var rask, men dum. Velegnet til en form for fillagring, og selv da kun hvis det kombineres med et andet plugin. Jeg kiggede på den og tog den ned.

Helt ærligt, da jeg læste beskrivelsen, tænkte jeg - det er det, jeg har brug for!

Tæller, adgangskodebeskyttelse, kortkode, der kan indsættes knapper, knap, der kan redigeres osv.

Og det ser sådan ud (han citerede to tre skabeloner brugt på én gang):

Men for at tilføje en fil, skal du først tilføje en tæller for den i plugins. For det andet er der praktisk talt ingen statistik overhovedet.

For det tredje kan du ikke indstille output til at vise filstørrelsen for brugeren. For det fjerde er der ingen grænse for downloadhastighed, der er kun adgangskodebeskyttelse for filen. Skabeloner kan ikke redigeres. Og en stor inskription tilbyder at købe premium-versionen for 45 bukke. Nå, generelt forstår du. Alt lækkert er for pengene. Deaktiverede den og rev den ned. Og flotte rammer, knapper mv. - Jeg skriver det selv ned i stilene, når jeg vil.

Resumé

Installer på standard måde (ved at kopiere til biblioteket wp-content/plugins/download-monitor/, lad det opdatere, udskift alle ikoner med ikoner fra arkivet i mappen wp-content/plugins/download-monitor/img/filetype_icons/ og aktivere.

I fremtiden, hvis jeg kommer uden om det, tænker jeg på at sætte linkene ind i pæne rammer ved hjælp af css3, som jeg højst sandsynligt også kommer til at skrive om. Bliv hængende :)

Opd. Nu har forfatteren omarbejdet WordPress Download Monitor plugin og skabt en helt anden version end den originale. Jeg testede det, men jeg kunne lide det meget mindre på grund af det faktum, at skabelonen til formularen for, hvordan downloadlinket vil se ud, ikke længere er så let at redigere. Forfatteren besluttede, at færdiglavede forudinstallerede visninger ville være tilstrækkelige. For eksempel, hvis du i downloadmenuen og derefter indstillinger skal vælge den ønskede visning blandt seks forudindstillede, klik på Gem

Så når du vælger den anden mulighed, får du noget som dette:

De der. på den nye version, vil det ikke være muligt at bruge den linje, jeg gav i beskrivelsen, men du skal skrive en speciel php-fil, der vil beskrive denne outputskabelon. Men det mest triste er ikke engang dette - men det faktum, at denne php-fil, hvis den placeres i mappen med plugin'et, vil blive overskrevet hver gang plugin'et opdateres. Og hvis du lægger det i en mappe med et tema, så når du ændrer temaet (selvom dette selvfølgelig sker meget sjældnere). Men under alle omstændigheder er det en ret arbejdskrævende opgave at skrive den, og indtil videre har jeg ikke lyst til det. Så det eneste plus ved det opdaterede plugin er

Der har ikke været lektioner om PHP og MySQL i lang tid. I dag vil vi skabe en enkel, men effektiv downloadtæller.

Hver fil vil have en indgang i en databasetabelrække. Antallet af fildownloads vil blive gemt i samme tabel. PHP vil opdatere MySQL-databasen og omdirigere brugeren til den nødvendige fil.

For at spore antallet af downloads af enhver fil, skal du lægge den i mappen filer og bruge en speciel URL for at få adgang til den.

Trin 1 - XHTML

Det første trin er at oprette opmærkningen til vores script. Det er meget enkelt - vi har en div fil-manager, der indeholder en uordnet liste, hvor hvert element i listen er ansvarlig for en fil.

De filer, hvis downloads skal spores, placeres i mappen filer i scriptets rodmapp. PHP gennemgår derefter alle filerne og tilføjer hver enkelt som et listeelement (li) til den uordnede liste.

demo.php


  • photoShoot-1.0.zip 0 download

Bemærk at href-attributten for linkene sender filnavnet som en parameter til download.php. Det er her sporingen af ​​antallet af downloads finder sted.

Du behøver ikke at vise alt på samme måde – du kan blot linke til download.php på dine sider og alle downloads vil ikke gå igennem.

Trin 2 - CSS

Efter markering, lad os starte med designet. CSS-reglerne nedenfor refererer til fil-manager-div ved hjælp af id (#-symbol), da den kun vises 1 gang på siden, og til andre elementer efter klassenavne.

styles.css

#file-manager( baggrundsfarve:#EEE; kant:1px fast #DDD; margin:50px auto; polstring:10px; bredde: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:blok; padding:8px; ) ul.manager li a:hover .download-label( /* Når du holder musen over ikonet, vis grøn downloadtekst: */ display:blok; ) span . download-label( baggrundsfarve:#64B126; kant:1px fast #4E9416; farve:hvid; display:ingen; font-size:10px; polstring:2px 4px; position:absolut; højre:8px; tekstdekoration: ingen ; text-shadow:0 0 1px #315D0D; top:6px; /* CSS3 afrundede hjørner */
-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;)

Trin 3 - PHP

Som jeg sagde før, søger PHP efter filer i mappen filer og udsender hver fil som et listeelement i en uordnet liste. Lad os tage et kig på, hvordan dette sker

demo.php - øverste del

// Fejlrapportering: error_reporting(E_ALL^E_NOTICE); // : kræver "connect.php"; $extension=""; $filer_array = matrix(); /* Åbn mappen og gå gennem alle filerne: */ $dir_handle = @opendir($directory) or die("Der er en fejl med din filmappe!"); while ($file = readdir($dir_handle)) ( /* Skip systemfiler: */ if($file(0)==".") continue; /* end() viser det sidste element i arrayet, der er genereret af explode() funktion: */ $extension = strtolower(end(explode(".,$file))); /* Spring php-filer over: */ if($extension == "php") fortsæt; $files_array=$fil ; ) /* Sorter filerne i alfabetisk rækkefølge */ sort($files_array,SORT_STRING); $file_downloads=array(); $result = mysql_query("VÆLG * FRA download_manager"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* $file_downloads array-nøglen vil være navnet på filen og vil indeholde antallet af downloads: */ $file_downloads[$row ["filnavn"] ]=$række["downloads"]; )

Bemærk, hvordan vi vælger alle rækker fra download_manager-tabellen ved hjælp af mysql_query(), og senere tilføjer dem til $file_downloads-arrayet med filnavnet som en nøgle til antallet af downloads. Således kan vi længere i koden skrive $file_downloads["archive.zip"] og vise antallet af downloads.

Nedenfor kan du se koden, der genererer listeelementerne:

demo.php - midterste del

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

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

    Alt gøres simpelthen ved at bruge en foreach-løkke på $files_array-arrayet. Herefter udsendes alt ved hjælp af ekko.

    Lad os nu se nærmere på, hvordan filsporing fungerer.

    download.php

    // Fejlkontrol: error_reporting(E_ALL^E_NOTICE); // Inkluder forbindelsesfilen til DB: require("connect.php"); if(!$_GET["fil"]) fejl("Manglende parameter!"); if($_GET["fil"](0)==".") fejl("Forkert fil!"); if(file_exists($directory."/".$_GET["fil"])) ( /* Hvis den besøgende ikke er en søgebot, tæller vi download: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filnavn ="".mysql_real_escape_string($_GET["fil"])."" PÅ DUBLIKAT NØGLEOPDATERING downloads=downloads+1"); header("Placering: ".$directory."/".$_GET[ "fil"] ); exit; ) else error("Denne fil findes ikke!"); /* hjælpefunktioner: */ function error($str) ( die($str); ) function is_bot() ( /* Denne funktion søger efter en robot */ $botlist = array("Teoma", "alexa", " froogle ", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory", "Spørg 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)!==falsk) returnerer sand; // Er en bot ) returnerer falsk; / / Ikke en bot)

    Det er vigtigt at tjekke, om din besøgende er et menneske eller en søgemaskinerobot. Robotter er bestemt gode, men lad os ikke lade dem forvrænge vores statistik. Dette er grunden til, at rækken i databasen kun opdateres efter is_bot()-kontrollen.

    Trin 4 - MySQL

    Som vi bemærkede i det foregående trin, er antallet af downloads gemt som en række i download_manager-tabellen. Lad os først forklare, hvordan denne anmodning fungerer:

    download.php

    INSERT INTO download_manager SET filename="filename.doc" PÅ DUBLIKAT NØLEOPDATERING downloads=downloads+1

    Det fortæller MySQL at indsætte en ny række i download_manager-tabellen og indstille rækkens filnavnsfelt til værdien af ​​den fil, der kaldes til download. Filnavnsfeltet er dog angivet som et unikt indeks i tabellen. Det betyder, at hver række kun kan indsættes én gang, ellers vil der opstå en duplikatnøglefejl.

    Det er her den anden del af forespørgslen vil fungere - PÅ DUBLIKAT NØGLEOPDATERING vil fortælle MySQL om at tilføje en til downloads-kolonnen, hvis filen allerede findes i databasen.

    På denne måde vil nye filer automatisk blive tilføjet til databasen, første gang de downloades.

    Trin 5 - jQuery

    For at kunne spore i realtid, ville det være godt at opdatere tælleren ved siden af ​​filnavnet efter hver download.

    Vi gør dette ved hjælp af jQuery:

    script.js

    $(document).ready(function())( /* Koden udføres efter at siden er indlæst */ $("ul.manager a").click(function())( var countSpan = $(".download -count",this); countSpan.text(parseInt(countSpan.text())+1); )); ));

    Vi tildeler simpelthen en klikhandler til de links, der fører til filerne, og for hvert klik tilføjer vi en værdi.

    Trin 6 - htaccess

    Der er en ting mere, der skal gøres. Download.php omdirigerer brugeren til den ønskede fil, der blev sendt som en parameter. Du har dog måske bemærket, at browsere forsøger at åbne nogle typer filer direkte. Vi er nødt til at igangsætte deres lastning. Dette kan gøres med et par linjer inde i .htacess-filen, som er placeret i mappen filer.

    ForceType-applikation/oktet-stream

    Nu er vores disk helt klar!

    Konklusion

    For at demoen kan fungere, skal du genskabe download_manager-tabellen i MySQL-databasen. Du kan finde den nødvendige SQL-kode i kilderne.

    Herefter skal du tilføje dine data for at oprette forbindelse til databasen i filen configuration.php.

    Jeg besluttede at se, hvor mange gange et af mine scripts blev downloadet fra siden. For at gøre dette besluttede jeg at skrive en fildownloadtæller til webstedet. Der er mange implementeringer af dette problem på internettet, men tjek ikke desto mindre min løsning.

    Logikken bag downloadtælleren er ret enkel. For at implementere det vil vi bruge min favorit ajax. Vi vedhæfter til knappen, når clik-hændelsen opstår, et opkald via ajax til tællerens php-fil. I php behandles ajax-anmodningen, og det samlede antal løb skrives til en tekstfil. Efter en vellykket optagelse returneres et svar med en samlet downloadtæller, og brugeren omdirigeres til linket for at downloade filen (filen downloades). Dette er så simpel logik. Lad os nu begynde at implementere den. Lad os oprette en downloadbar fil test.zip på forhånd. Lad os kode knappen og vise løbstælleren.

    Download fil Antal løb:

    Vi oprettede en knap med id="btnSend" , vi vil vise tælleren i et span med id="countView" , og vi gemmer et link til den downloadede fil i data-download-attributten

    Lad os nu vedhæfte en klikhandler til knappen. Her vil vi allerede bruge js og jquery. Du kan læse om, hvordan du implementerer clik ved hjælp af jquery. Men før du installerer klikhåndteringen, vil vi ajax få adgang til filen count.php, som vil indeholde alt tællerens arbejde. Du kan læse mere om ajax dataoverførsel. Dette er nødvendigt for at udlæse fra filen, hvor tælleren skriver antallet af downloads, der allerede er foretaget, og vise dem i et span med id="countView"

    /*hent det aktuelle antal downloads*/ $(document).ready(function())( //forbyd caching af ajax-anmodningen //ellers mislykkes tælleren $.ajaxSetup((cache: false)); var html ; $.ajax (( //hvordan vi vil overføre datatype: "GET", //hvor vi vil overføre url: "count.php", //hvilke data vi overfører data: (flag: 2), // hændelse efter modtagelse af et svar fra count.php success : function(data)( html=data; //vis det aktuelle antal downloads $("#countView").html(html); ) )); /*vedhæft en begivenhed til knappen download fil*/ var clickevent=false; //klik testflag //click handler $("#btnSend").click(function())( if(!clickevent)( $.ajax(( //how vi vil overføre datatype: "GET", //hvor vi vil overføre det url: "count.php", //hvilke data sender vi data: (flag: 1), //event før afsendelse af ajax førSend: function( ))( //hvis der blev klikket på knappen, så true clickevent=true; ), //hændelse efter modtagelse af svaret, //modtag data i data succes: function(data)( //efter at have gennemført handlingerne, tillader vi det igen //for at behandle klik på knappen clickevent=false; html=data; //vis en ny tæller $("#countView").html(html); //hent linket fra data-download //redirect til download-linket, download filen window.location.href = $("#btnSend").data("download"); ) )); ) return false;//forbyd behandling af klikhændelsen )); ));

    For at forhindre, at indsend-knappen bliver trykket ved en fejl igen, introducerede jeg clickevent-flaget i scriptet. Indtil svaret fra count.php vender tilbage med opdaterede tællerdata, vil det være forbudt at klikke på knappen. Jeg synes, betjeningen af ​​koden efter at have klikket på knappen er mere eller mindre klar. Efter at have klikket på download-knappen, overføres dataene til count.php-filen, hvor de behandles og opdaterede tællerdata returneres, en omdirigering til downloadlinket sker, og følgelig downloades filen.

    Lad os nu se på hjertet af vores script, nemlig count.php-filen.

    Funktion clearInt ($date)( //reducer dato til et ikke-negativt tal returner abs((int)$date); ) if($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest") ( //tjek hvilket flag der var modtaget if (clearInt($_GET["flag"]==1)) ( //åbn filen for at læse $f=fopen("mycount.txt","a+"); //lukker adgangen til filen fra andre programmer flock($ f,LOCK_EX); //hent tællerværdien fra filen $count=fread($f,100); //tilføj tælleren @$count++; //overskriv filen ftruncate($f,0) ; //skriv en ny tælleraflæsning fwrite ($f,$count); //luk filen fclose($f); //return værdien echo $count; ) if(clearInt($_GET["flag"]= =2)) ( $c=fopen(" mycount.txt","a+"); flock($c,LOCK_EX); $festc=fread($c,100); fclose($c); //retur værdi ekko $festc;))

    Her tænker jeg det samme, alt er enkelt. Hvis flag 1 kommer, så omskriver vi tælleren. Hvis flag 2 kommer, returneres data om antallet af downloads simpelthen. Alt andet, synes jeg, fremgår tydeligt af kommentarerne i koden.

    Joomla download tæller

    Jeg besluttede at vedhæfte en lignende tæller til et af mine Joomla-projekter. I teorien skal du selvfølgelig enten skrive et separat modul eller integrere koden i controlleren for com-indholdskomponenten, så tællerdataene skrives ikke til en fil, men til databasen og for hver artikel separat. Men der er ikke tid til en sådan udvikling, og jeg løste problemet mere enkelt. Jeg havde brug for tælleren til en side. Jeg tog filen count.php og overførte den til Joomla-skabelonen, som i øjeblikket er forbundet (i roden af ​​webstedsskabelonerne/din_skabelon). Glem ikke at indsætte koden defineret("_JEXEC") eller dø helt øverst i count.php. (dette er til Joomla). Vi indsætter download-knappen på den side, vi opretter, og js-koden kan også indlejres på siden eller forbindes som en separat fil. For eksempel har jeg den som en separat fil (den er placeret i skabelonens js-mapp). I selve skabelonen, i headeren, sker forbindelsen gennem kode