Създаване на брояч за изтегляне на файлове с помощта на PHP и MySQL. Инсталиране на брояч за изтегляне - преглед на плъгини за WordPress Брояч за изтегляне на файлове php

На много сайтове можете да видите връзки за изтегляне на файлове. Например производствените компании публикуват инструкции за конкретен продукт на официалните си страници. Освен това разработчиците на софтуер също предлагат безплатно изтегляне на тяхната програма, като по този начин позволяват на потребителя да се запознае с нейните функции и работа.

Когато предоставяте файл за безплатно изтегляне, е важно да знаете колко пъти е бил изтеглен. Това е необходимо преди всичко за статистиката, чийто анализ ще помогне да се определи полезността на информацията за крайния потребител.

Как да настроите брояч за изтегляне на сайт на WordPress?

Няма начин да видите тези статистики сред инструментите на WordPress. Затова ще използваме решение на трета страна - приставката Kama Click Counter.

Плъгин Kama Click Counter

Безплатният плъгин Kama Click Counter предоставя всички необходими инструменти за точно отчитане на броя изтегляния на определен файл. Така че, първо, той трябва да бъде инсталиран и активиран. Например, ще покажем на страницата за публикация връзка към pdf файл, за който ще броим броя изтегляния. Трябва да се отбележи, че файловете се качват на сайта чрез стандартните методи на WordPress Media Library (Медия -> Добавяне на нов). След това трябва да отворите публикацията или страницата за редактиране. В частта със съдържанието трябва да поставите курсора на мястото, където ще бъде поставена връзката към файла, и щракнете върху бутона, който се появява в лентата с инструменти на визуалния редактор.

В изскачащ прозорец плъгинът ще ви помоли да изберете изтегления преди това файл. За да направите това, натиснете бутона с иконата на лупа.

В библиотеката с медийни файлове изберете желания файл и щракнете върху бутона Избор на файл.

В резултат на това в съдържанието на публикацията или страницата ще бъде вмъкнат специален кратък код, който служи за показване на връзка за изтегляне на файла.

След като актуализирате материала (бутон Актуализиране), можете да отидете на сайта, за да го видите.

Плъгинът също може да показва статистика за изтегляне в потребителската част на сайта – в уиджет. Обърнете внимание, че по подразбиране приставката не показва конкретни числа в уиджета за това какво е изтеглено и колко пъти. Показва се само списък с най-често изтегляните файлове. За да направите това, отидете в раздела на администратора Външен вид -> Джаджи и плъзнете изпълнимия модул KSS:Най-популярни изтегляния до желаното място в страничната лента.

Можете да видите, че джаджата има няколко налични опции, които ви позволяват да променяте списъка.

Тук можете да зададете следните основни параметри:

  • заглавие на джаджа (поле за заглавие);
  • брой изходни файлове в списъка (колко връзки да се показват?);
  • сортиране на резултатите (как да сортирам резултата?);
  • персонализиране на външния вид на шаблона (шаблон и CSS блокове на шаблона).

Специална характеристика на плъгина е неговата гъвкава настройка на шаблона. Тук можете да използвате така наречените тагове, на мястото на които ще се показва тази или онази информация.

След като всички настройки на уиджета са завършени и запазени (бутон Запазване), можете да видите резултата на уебсайта.

Следващият въпрос, от който наскоро се заинтересувах, когато създавах моя прост авторски проект, беше въпросът как да преброя броя на изтеглянията на конкретен файл, публикуван тук. Най-логично беше да се предположи, че това изисква друг плъгин, някакъв мениджър за изтегляне или което е по-просто - брояч за изтегляне. След като претърсих интернет, се оказа, че както обикновено има вагон и малка количка от тези плъгини. Но отново няма ревюта за тях. Абсолютно не е ясно какво да избера и както обикновено трябваше да тествам всичко върху себе си. И въз основа на резултатите от тестването беше създаден този рецензент. Писането отне много време и целта не беше да се тестват задълбочено всички дадени плъгини с пълен преглед на техните настройки, така че няма да намерите подробни екранни снимки на всеки, но ще има ключови настройки. За някои от тях изобщо не исках да говоря - бяха толкова глупави, но след като ги погледнах, беше жалко да не напиша нищо.

Въведение.

И така, задачата беше да преброим броя на изтеглянията на конкретен файл, като зададем брояч на изтегляния за WordPress. При по-внимателно разглеждане той се раздели на няколко подзадачи или по-скоро желания за плъгин, който да го изпълни. Ето кратък списък от тях:

  • Необходимо е някъде в админ панела да се показва броя на тегленията, с възможност за сортиране - колко са теглени на ден, на седмица, месец, година, общо
  • Би било желателно да можете да видите графики/диаграми на изтеглянията на файлове един спрямо друг
  • Би било желателно да можете да видите графики/диаграми на изтеглянията на файлове във времето
  • Препоръчително е да се води статистика кога за последно е изтеглен файлът
  • Възможност за показване на информация до връзката за това колко пъти е бил изтеглен файлът, както и неговия размер и датата на изтегляне за потребителя, който е на път да го изтегли. Е, или да не се оттегли - по искане на администратора
  • Възможността за вмъкване на кода, отговорен за това, с помощта на отделен бутон в панела за писане на публикация на редактора TinyMCE (не обичам да използвам бързи маркери)
  • Възможност за ограничаване на скоростта на изтегляне (за всеки случай)
  • Прикачване на функция за качване към този плъгин (качване на файлове на сървъра) - напротив, не се отказах. FTP работи добре и за мен. Но ако не пречи твърде много, оставете го да остане
  • Би било хубаво да можете да прикачите хубав бутон към връзката за изтегляне - въпреки че за мен е достатъчно да напиша class="button"

ABAP

Изтеглете файла!

  • Би било добре, ако той преброи броя на изтеглянията не само от уебсайта си, но просто от връзката
  • Възможност за забрана на директно изтегляне на файл, без да се показва къде се намира на сървъра.

Ето малък списък.

Преглед

След като решим техническите спецификации, ще започнем да разглеждаме какво директно ни се предлага.

1. Изтеглете приставката Counter 1.2, изтеглена тук.

Първоначално страницата на плъгина беше локализирана, но авторът не я поддържа повече от 4 години. Създаваме друга папка за него в директорията на добавките за мен - download-counter, и пускаме двата файла там. В резултат - къде мислите? — настройките за него се показват в записите. Много оригинално, но добре.

Нека влезем вътре и напишем пътя до файла download-manager.php (наистина не обичам да хвърлям глупости направо в корена). И да видим какво имаме. Качваме файла, проверяваме дали е изтеглен ръчно, ако въведете директна връзка в браузъра, въведете пътя в плъгина, за да създадете брояч. На теория трябва да се създаде ID, който след това ще трябва да се вмъкне навсякъде. Но нищо не работи - дава грешка "Грешка - Не може да се запази записът." Е, добре, ние убедихме, прехвърляме го в корена download-manager.php - отново нищо, същата грешка. Е, по дяволите, златна рибка, не ми беше достатъчно да разбирам плъгините, от които авторът не се отказа. Освен това функционалността е практически нулева.

2. Изтеглете приставката Counter Advanced 1.1, изтеглена.

Веднага ще кажа, че и при мен не работи, така че можете да прочетете за неговата инсталация и конфигурация само от академичен интерес. По същество това е същият плъгин, само леко модифициран. Слава Богу, въпреки че инструкциите не са преведени, можете да ги прочетете нормално, а не да се опитвате да разберете какво има предвид преводача. Между другото, в админ панела изглежда, че е напълно различен плъгин, предлагащ актуализиране (да, какво по дяволите). Подобно на предишния плъгин, неговата страница беше локализирана и по същия начин авторът не го поддържа повече от 4 години. По аналогия създаваме друга папка за него в директорията на добавките, моята е download-counter и хвърляме всички файлове там. Настройките изглеждат, разбира се, по-богати, въпреки че скоростта на изтегляне е ограничена за всички файлове наведнъж и не е зададена за всеки един. Къде е file download-manager..php (не забравяйте името на файла накрая, но аз от първия път добре познах къде са всички тегления, което ме хвърли в ужасно учудване. Както се оказа по-късно, Познах името на директорията, в която се качват изтегляния, тук логиката ми работи 100% идентично с автора на плъгина.

Добавяме имената на папките, които имаме на сървъра, в директорията за изтегляне (в настройките „категории и директории“), за да улесним избора на пътя до файловете. Ако не ги добавите, ще трябва да изтеглите всичко в корена на изтеглянията. Запазете, можете да добавите изтегляния. Това е приблизително това, което получаваме.

Сега нека се опитаме да го вмъкнем в публикацията. Добавяме връзка, в нея променяме нашата връзка към кода, който се издава директно в настройките на плъгина. И тогава... Майната ти! HTTP грешка 500 (вътрешна грешка на сървъра): Възникна неочаквана ситуация, докато сървърът се опитваше да изпълни заявката. Е, тъкмо щях да ви кажа как да добавите брояч директно към публикация, а ако към връзката вътре за да работи

ABAP

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

тогава можете да покажете бутон за изтегляне - наистина е крив. Толкова за плъгина, загубих ви времето. Той всъщност не води статистика, защото няма да разберем къде е грешката.

Това е точно плъгинът, към който беше предложено да се актуализира гореспоменатия Download Counter Advanced. Е, той предлага - и добре, нека го изтеглим и да видим. Плъгинът също не е актуализиран повече от 3 години, а някои потребители дори сами направиха корекции в кода му. Инсталира се доста успешно, аскетизмът на настройките не вдъхва оптимизъм. Между другото, браво също, познаха къде да поставят настройките - не по-лошо от предишния случай. Добавяме броячи на страницата с настройки, всичко изглежда се показва както трябва.

Да видим какво сме добавили към публикацията. Да, няма бутони. О, разбира се, забравих, че всичко е интуитивно. Нека да разгледаме инструкциите. Необходимо е да се изгради сложна структура, състояща се от кратки кодове като , изтеглени и в същото време (вероятно поради CNC) всъщност не брои нищо.

Затова няма да го разглеждаме по-нататък, заедно със съпътстващия плъгин Download Counter Chart, който показва информацията в графична форма.

Написан е от наш сънародник, но за съжаление единственото, което може да направи, е да покаже броя на хората, които са изтеглили файла до името му - няма статистика или други предимства. Въпреки това, ако сте любители на минимализма, това е, което ви трябва. Само не забравяйте, че няма бутони, кратък код като


Направи си сам брояч за изтегляне за WordPress

ще трябва да го въведете ръчно. Много е добре, че авторът описа всичко подробно, така че не трябваше да го тествам върху себе си.

Е, ако говорим за плъгини, написани от наши хора, тогава не можем да не споменем още един. Огромното му предимство е, че ви позволява да преброите не само броя изтегляния на файлове, но и просто кликвания върху връзки - няма значение дали водят до файл или просто до друга страница. Или към файл на чужда страница :) Той също ще преброи това или по-скоро теоретично трябва да го преброи. Със статистиката също не е толкова добре, няма бутони в панела за редактиране и няма ограничения за изтеглянията. Но все пак е интересно да се види. Затова изтегляме и инсталираме. По принцип има доста подробно описание на сайта на автора, така че няма да навлизам в подробности. Винаги трябва да имате предвид, че ако трябва да зададете брояч на файл или връзка, трябва да използвате кратък код за тип или да вмъкнете class class="count" във връзката. Това, разбира се, е досадно; с бутон би било много по-удобно. Но най-дразнещото е, че след всичките усилия не успях да го накарам да работи адекватно - ако беше използван кратък код, самата връзка за изтегляне не се показваше, а ако беше използван клас, статистиката за връзките не се появяваше в админ панел. Екранните снимки могат да се видят от автора - ако ви харесва самата идея, опитайте я, може би ще успеете.

Наистина много просто. Не са необходими кратки кодове и т.н. Този плъгин обаче предоставя статистика само за автора, до връзката към файла не се показва.

Все пак трябва да се отбележи, че се води подробна статистика кой какъв файл е изтеглил и кога. Въпреки това не е много удобно за използване.

Настройките включват следното:

  • Можете да посочите директорията, от която да се изтеглят файлове
  • Можете да посочите типовете файлове, които са разрешени за изтегляне
  • Предотвратете отчитането на изтеглянията на файлове като автор
  • Задайте интервала в секунди, през който многократните щраквания върху връзка от същия IP ще се броят само веднъж
  • Ограничете броя на файловете, които могат да се изтеглят от едно IP на ден
  • Използвайте някаква междинна страница с информация, че изтеглянето ще започне сега

Всичко това обаче работи само ако (как бих го казал по-просто...) имате разрешение да редактирате файла .htaccess или ако посочите връзката директно, като я вмъкнете в

Тъй като обаче нямаше възможност да показва статистика за потребителите и не исках да запомня типа на връзката, спрях да я обмислям на този етап, като реших да се върна само ако другите добавки в опашката не са в състояние да решат задачата.

По отношение на показването на информация, този плъгин е много подобен на този, разгледан в предишния параграф. Различава се по това, че ви позволява да преглеждате статистики отделно седмично, месечно, за всеки период и просто първите 10. По отношение на възможностите си е много по-жалък, няма статистика за последното изтегляне или за конкретен файл, да не говорим за възможността за въвеждане на ограничения за изтегляне на файлове. Изобщо няма ясна документация. Останах с впечатлението, че това е просто някакво недоразумение, а не плъгин. Дори не искам да давам екранни снимки, но за да бъда обективен, все пак ще ги дам, тези на автора.

Е, ето ни нещо повече или по-малко достойно. Почти половин милион изтегляния - това говори нещо. Официалната страница на плъгина се намира. За да вмъкнете файл в публикация, трябва да използвате стрелката над визуалния редактор (самата икона не се появява в него)

И в прозореца, който се показва, изберете желания файл (това е пример, ако вече е качен чрез FTP)

След това щракнете върху бутона „Запазване на ново изтегляне“.

и като отидете на следващия екран, изберете формата за изтегляне и щракнете върху Вмъкване в публикация. Възможно е нищо да не се случи. Плъгинът има леки грешки с най-новите версии на WordPress. Следователно трябва допълнително да кликнете върху връзката Преглед на изтеглянията

И след това, след като първо изберете формата за изтегляне, щракнете върху връзката Вмъкване срещу точния файл, който трябва да бъде вмъкнат.

След което съответният кратък код като

ABAP

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

Плъгинът изисква фина ръчна конфигурация, но не е предоставен WYSIWYG. Хубавото е, че трябва да го настроите само веднъж. Подробна документация е достъпна при автора.

Ето примерна настройка:

ABAP

(заглавие)

< ahref= "(url)" title="Изтеглени (посещения,"ни разу","1 раз","% раза"}">{title}!}

Трябва да се отбележи, че деклинациите не се поддържат, т.е. ако файлът е бил изтеглен 21 пъти и имате „раза“ във вашия шаблон, тогава ще звучи някак не по руски.

А ето и опцията с бутона:

ABAP

- (описание), (размер), качени (дата, "Y-m-d"), изтеглени (посещения) пъти

< ahref= "(url)" title="Изтеглени (посещения,"ни разу","1 раз","% раза"}">!} - (описание), (размер), качени (дата, "Y-m-d"), изтеглени (посещения) пъти

Изглежда така:

Е, след известна модификация моят започна да изглежда така (все още без бутони):

Код на реда:

ABAP

(filetype_icon) (title) (Размер на файла: (размер), Качен: (дата,"d.m.Y"), Изтеглен (посещения) пъти)
(описание)

Списъкът с възможности е доста широк:

  • Можете да качвате файлове или чрез него (като щракнете върху стрелката), или да посочите местоположението, където се намират, ако преди това са били качени през FTP, можете просто да посочите URL
  • Скрива истинското местоположение на файла, можете да замените всяка необходима URL комбинация
  • Можете да използвате бутона за изтегляне, включително вашия собствен
  • Изтеглянията от администратора и всички ненужни IP адреси, включени в списъка за насрещно изключване, не се вземат предвид.
  • Трябва ли да броя многократни изтегляния в рамките на определено време от същия IP?
  • Можете да зададете няколко формата - с картина, с брояч, без брояч и т.н., и да използвате всеки от тях в подходящата ситуация
  • Има качване на регистрационния файл за изтегляне като csv файл

Ако се качва някакъв mp3 или видео файл, трябва да посочите за тях дали е принудително изтегляне или не. Ако принудите - тогава, като щракнете върху него, той ще бъде изтеглен, ако не поставите отметка в квадратчето - играйте, след това запазете - щракнете с десния бутон. Държа да отбележа, че файловете, качени с негова помощ, не се поставят там, където е създадена вашата специална директория за файлове, а в създадената от него wp-content/uploads/downloads/ - трябва да запомните това, както и факта, че при изтриването им от статистиката - файловете се изтриват и физически от сървъра. С тези, които се качват през FTP всичко е ОК. Плюс това, ако вмъкнете връзка в различни публикации към един и същи файл, тогава не разбрах дали ще ги обобщи. За съжаление, той не поддържа никакви ограничения за изтегляне, освен че можете да забраните изтеглянето на всички, с изключение на регистрираните потребители. Когато искате да покажете името на файл в най-долния ред на браузъра или трябва да го промените на неговия идентификатор, трябва да запомните да отидете в настройки->постоянни връзки и да запазите конфигурацията там, така че всичко да е написано правилно в . htaccess - без това файловете няма да се изтеглят!

Статистиката се показва на три места едновременно - в конзолата, в информация за файлове и в регистрационни файлове за изтегляне. Това създава определени неудобства, например, когато трябва да видите кога последно е изтеглен файл, но можете да изтеглите статистика като csv файл и след това да я сортирате в Excel. Като се има предвид, че Excel има дяволски възможности за конструиране на необходимите таблици и диаграми, тогава може би това не е лошо. Мисля обаче, че екранните снимки ще кажат повече:

Е, екранна снимка на самия дневник:

В същото време огромен плюс е, че в конзолата се появява джаджа със статистика като тази:

Като цяло можем да кажем, че след малко конфигуриране плъгинът върши добре работата си.

Този плъгин е написан от същия автор като плъгина WP-Polls, който аз например използвам на този сайт. Въпреки че в сравнение с това се радва на порядък по-малка популярност. Но да видим дали е заслужено. Цялата документация може да бъде намерена на уебсайта на автора. В основата си плъгинът е абсолютно идентичен с предишния - шаблонът е написан по абсолютно същия начин, няма ограничения за изтегляне, освен за регистрирани или нерегистрирани потребители, а също така трябва да използвате кратък код като

ABAP

[downloadid="7592"]

Е, по другите точки:

  • Можете да качвате файлове с него (до два MB или каквото сте посочили в php.ini) и да посочите мястото, където се намират, ако са качени по-рано през FTP, можете просто да посочите URL
  • Скрива истинското местоположение на файла, но не е възможно да се замени необходимата URL комбинация, има само няколко фиксирани опции, основната от които не работи за мен
  • Може да се конфигурира да показва информация на посетителите за размера на файла, колко пъти е изтеглен, кога е изтеглен
  • Можете да покажете икона за съответните типове файлове
  • Можете да нулирате брояча или да зададете желаната стойност

Все пак има някои разлики. Първо, във визуалния редактор няма бутон, с който можете да вмъкнете кратък код. Или по-скоро има бутон, но за да го използвате, първо трябва да добавите брояч за файла в настройките на плъгина и след това с този бутон ID-то на брояча ще бъде добавено директно към публикацията. Второ, има само един шаблон и няма да е възможно да се показва различна информация за различни файлове. Сред предимствата на статистиката - показва кога последно е изтеглен файла, иначе има само недостатъци - няма качване в csv файл, няма преглед кой е изтеглил (няма IP), няма разпределение по дата.

Но иконите са по-красиви (по-късно ги добавих към предишния плъгин). Резултатът от работата му изглежда така:

Също така, когато изтривате запис от базата данни, той пита дали самият файл трябва да бъде изтрит или оставен. Но по отношение на съвкупността от свойствата ми хареса по-малко от предишния - най-малкото защото файлът трябва да се вмъкне отделно извън публикацията, но няма особени недостатъци - изборът между тях е въпрос на вкус, първият има повече опции, по-подробна статистика, вторият - малко по-удобни (макар и по-бедни) статистики и по-малко възможности.

В действие влезе тежка артилерия. Плъгинът е предимно русифициран и е само мениджър за изтегляне, а не брояч. Възможно е да се ограничи скоростта на изтегляне и броя на изтеглянията на човек на ден.

Но бих казал, че някои от функциите на този плъгин са ненужни, а необходимите според статистиката не са достатъчни. Има много настройки, джаджи за изтегляне, сложна система за синхронизация, система за показване на mp3 тагове, показване на flv файлове, организиране на хранилище за мини файлове, показване на всички файлове, изброени на страницата в началото или в края на публикацията, и т.н.

Дори не искам да показвам екранни снимки на всички настройки.

Но с всичко това, за да покажа шаблона красиво в публикацията, трябваше да редактирам стиловия файл в него, като намалих ширината. Плюс това, за да покажете шаблона по подразбиране, трябва да използвате бутона, след като поставите краткия код

Въведете ръчно името на шаблона в кода. Някакъв конфликт с руското име. Между другото, изглежда така (ще дам три опции за шаблони):

Брои се - през колода пън (е, или не брои повече от едно изтегляне от IP, не знам). Статистиката е малко по-малко от напълно подобна на плъгина, току-що обсъден по-горе.

Общо взето останах с впечатление, че е здрав, но глупав. Подходящ за някакъв вид съхранение на файлове и дори тогава само ако се комбинира с някой друг плъгин. Погледнах го и го свалих.

Честно казано, когато прочетох описанието му, си помислих - това е, това, което ми трябва!

Брояч, защита с парола, кратък код за вмъкване на бутон, бутон за редактиране и др.

И изглежда така (той цитира два три шаблона, използвани наведнъж):

Въпреки това, за да добавите файл, първо трябва да добавите брояч за него в добавките. Второ, на практика няма никаква статистика.

Трето, не можете да настроите изхода да показва размера на файла за потребителя. Четвърто, няма ограничение за скоростта на изтегляне, има само защита с парола за файла. Шаблоните не могат да се редактират. И голям надпис, който предлага да закупите премиум версията за 45 долара. Е, общо взето разбирате. Всичко вкусно е за пари. Деактивира го и го разруши. И красиви рамки, копчета и т.н. - Сам ще го запиша в стиловете, когато поискам.

Резюме

Инсталирайте по стандартния начин (чрез копиране в директорията wp-content/plugins/download-monitor/, оставете го да се актуализира, заменете всички икони с икони от архива в директорията wp-content/plugins/download-monitor/img/filetype_icons/и активирайте.

В бъдеще, ако стигна до това, мисля да поставя връзките в хубави рамки с помощта на css3, за което най-вероятно също ще пиша. Останете на линия :)

Актуализация Сега авторът е преработил плъгина WordPress Download Monitor и е създал напълно различна версия от оригиналната. Тествах го, но ми хареса много по-малко поради факта, че шаблонът на формата на това как ще изглежда връзката за изтегляне вече не се редактира толкова лесно. Авторът реши, че готовите предварително инсталирани изгледи ще бъдат достатъчни. Например, ако в менюто за изтегляне, след това настройки, изберете желания изглед от шест предварително зададени, щракнете върху запазване

След това, когато изберете втората опция, получавате нещо подобно:

Тези. в новата версия няма да е възможно да използвате реда, който дадох в описанието, но ще трябва да напишете специален php файл, който да описва този изходен шаблон. Но най-тъжното дори не е това - а фактът, че този php файл, ако бъде поставен в директорията с плъгина, ще бъде презаписан всеки път, когато плъгинът се актуализира. И ако го поставите в директория с тема, тогава, когато промените темата (въпреки че това, разбира се, се случва много по-рядко). Но така или иначе написването му е доста трудоемка задача и засега нямам желание да го правя. Така че единственият плюс на актуализирания плъгин е

Отдавна не е имало уроци за PHP и MySQL. Днес ще създадем прост, но ефективен брояч на изтегляния.

Всеки файл ще има запис в ред от таблица на базата данни. Броят на изтеглянията на файлове ще се съхранява в същата таблица. PHP ще актуализира MySQL базата данни и ще пренасочи потребителя към необходимия файл.

За да проследите броя на изтеглянията на всеки файл, трябва да го поставите в папката с файлове и да използвате специален URL за достъп до него.

Стъпка 1 - XHTML

Първата стъпка е да създадем маркирането за нашия скрипт. Много е просто - имаме div файлов мениджър, който съдържа неподреден списък, в който всеки елемент от списъка отговаря за файл.

Файловете, чиито изтегляния трябва да бъдат проследени, се поставят в папката с файлове в основната папка на скрипта. След това PHP преминава през всички файлове и добавя всеки един като елемент от списък (li) към неподредения списък.

demo.php


  • photoShoot-1.0.zip 0 изтегляне

Имайте предвид, че атрибутът href на връзките предава името на файла като параметър на download.php. Тук се извършва проследяването на броя изтегляния.

Не е нужно да показвате всичко по един и същи начин - можете просто да свържете към download.php на вашите страници и всички изтегляния няма да преминат.

Стъпка 2 - CSS

След маркирането, нека започнем с дизайна. CSS правилата по-долу се отнасят за div на файловия мениджър, използвайки id (символ #), тъй като той се появява само 1 път на страницата, и за други елементи по имена на класове.

styles.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") 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( /* Когато задържите курсора на мишката над иконата, покажете зелен текст за изтегляне: */ display:block; ) span . етикет за изтегляне (цвят на фона:#64B126; граница:1px плътен #4E9416; цвят:бял; дисплей:няма; размер на шрифта:10px; padding:2px 4px; position:absolute; right:8px; text-decoration: няма ; text-shadow: 0 1px #315D0D; /* 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; )

Стъпка 3 - PHP

Както казах преди, PHP търси файлове в папката с файлове и извежда всеки файл като елемент от списък в неподреден списък. Нека да разгледаме как става това

demo.php - горна част

// Докладване на грешка: error_reporting(E_ALL^E_NOTICE); // : изисква се "connect.php"; $разширение=""; $files_array = масив(); /* Отворете папката и преминете през всички файлове: */ $dir_handle = @opendir($directory) или die("Има грешка във вашата файлова директория!"); докато ($file = readdir($dir_handle)) ( /* Пропускане на системни файлове: */ if($file(0)==".") Продължи; /* end() показва последния елемент от масива, генериран от функция explode(): */ $extension = strtolower(end(explode(".,$file))); /* Пропускане на php файлове: */ if($extension == "php") продължи; $files_array=$file ; Сортирайте файловете по азбучен ред */ sort($files_array,SORT_STRING); $file_downloads=масив(); $result = mysql_query("ИЗБЕРЕТЕ * ОТ download_manager"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* Ключът на масива $file_downloads ще бъде името на файла и ще съдържа броя на изтеглянията: */ $file_downloads[$row ["filename"] ]=$row["downloads"] )

Забележете как избираме всички редове от таблицата download_manager с помощта на mysql_query() и по-късно ги добавяме към масива $file_downloads с името на файла като ключ към броя на изтеглянията. Така по-нататък в кода можем да напишем $file_downloads["archive.zip"] и да покажем броя на изтеглянията.

По-долу виждате кода, който генерира елементите от списъка:

demo.php - средна част

Foreach($files_array as $key=>$val) ( ехо "

  • ".$val." ".(int)$file_downloads[$val]." изтегляне
  • "; }

    Всичко се прави просто с помощта на цикъл foreach в масива $files_array. След това всичко се извежда с помощта на ехо.

    Сега нека разгледаме по-отблизо как работи проследяването на файлове.

    изтегляне.php

    // Проверка на грешки: error_reporting(E_ALL^E_NOTICE); // Включете файла за връзка към DB: require("connect.php"); if(!$_GET["file"]) error("Липсващ параметър!"); if($_GET["file"](0)==".") грешка("Грешен файл!"); if(file_exists($directory."/".$_GET["file"])) ( /* Ако посетителят не е търсещ бот, ние отчитаме изтеглянето: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filename ="".mysql_real_escape_string($_GET["file"])."" НА АКТУАЛИЗАЦИЯ НА ДУБЛИРАН КЛЮЧ downloads=downloads+1"); header("Местоположение: ".$directory."/".$_GET[ "файл"]); exit; else error("Този файл не съществува!"); /* помощни функции: */ функция error($str) ( die($str); ) функция is_bot() ( /* Тази функция проверява за робот */ $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; // Е бот) return false; / / Не е бот)

    Важно е да проверите дали вашият посетител е човек или робот на търсачката. Роботите със сигурност са добри, но нека не им позволяваме да изкривяват статистиката ни. Ето защо редът в базата данни се актуализира само след проверката на is_bot().

    Стъпка 4 - MySQL

    Както забелязахме в последната стъпка, броят на изтеглянията се съхранява като ред в таблицата download_manager. Първо, нека обясним как работи тази заявка:

    изтегляне.php

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

    Той казва на MySQL да вмъкне нов ред в таблицата download_manager и да зададе полето за име на файла на реда на стойността на файла, извикан за изтегляне. Полето за име на файл обаче е обозначено като уникален индекс в таблицата. Това означава, че всеки ред може да бъде вмъкнат само веднъж, в противен случай ще възникне грешка с дублиран ключ.

    Това е мястото, където ще работи втората част от заявката - ON DUPLICATE KEY UPDATE ще каже на MySQL да добави един към колоната за изтегляне, ако файлът вече съществува в базата данни.

    По този начин новите файлове автоматично ще се добавят към базата данни при първото им изтегляне.

    Стъпка 5 - jQuery

    За да можете да проследявате в реално време, би било добре да актуализирате брояча до името на файла след всяко изтегляне.

    Ще направим това с помощта на jQuery:

    script.js

    $(document).ready(function())( /* Кодът се изпълнява след зареждане на страницата */ $("ul.manager a").click(function())( var countSpan = $(".download -count", това); countSpan.text(parseInt(countSpan.text()));

    Ние просто присвояваме манипулатор на кликване на връзките, които водят до файловете, и при всяко кликване добавяме стойност.

    Стъпка 6 - htaccess

    Има още нещо, което трябва да се направи.

    Download.php пренасочва потребителя към искания файл, който е предаден като параметър. Въпреки това може да сте забелязали, че браузърите се опитват да отварят някои типове файлове директно. Трябва да започнем зареждането им. Това може да стане с няколко реда във файла .htacess, който се намира в папката с файлове.

    ForceType приложение/октетен поток

    Сега нашият брояч е напълно готов!

    Заключение

    За да работи демонстрацията, трябва да пресъздадете таблицата download_manager в базата данни MySQL. Можете да намерите необходимия SQL код в източниците.

    След това добавете вашите данни за свързване към базата данни във файла configuration.php.

    Реших да видя колко пъти един от моите скриптове е бил изтеглен от сайта. За да направя това, реших да напиша брояч за изтегляне на файлове за сайта. Има много реализации на този проблем в Интернет, но въпреки това вижте моето решение.

    Логиката зад брояча за изтегляне е доста проста. За да го реализираме, ще използваме любимия ми ajax. Прикачваме към бутона, когато настъпи събитие clik, извикване чрез ajax към php файла на брояча. В php ajax заявката се обработва и общият брой състезания се записва в текстов файл. След успешен запис се връща отговор с общ брояч на изтегляне и потребителят се пренасочва към връзката за изтегляне на файла (файлът е изтеглен). Това е толкова проста логика, а сега нека започнем да я прилагаме. Нека предварително създадем файл за изтегляне test.zip. Нека кодираме бутона и да покажем брояча на състезанията.

    Създадохме бутон с id="btnSend" , ще покажем брояча в диапазон с id="countView" и ще съхраним връзка към изтегления файл в атрибута за изтегляне на данни

    Сега нека прикрепим манипулатор за кликване към бутона. Тук вече ще използваме js и jquery. Можете да прочетете как да внедрите clik с помощта на jquery. Но преди да инсталираме манипулатора на щракванията, ще получим ajax достъп до файла count.php, който ще съдържа цялата работа на брояча. Можете да прочетете повече за прехвърлянето на данни с ajax.

    Това е необходимо за извеждане от файла, където броячът записва броя на вече направените изтегляния и ги показва в интервал с id="countView"

    /*получаване на текущия брой изтегляния*/ $(document).ready(function())( //забранява кеширането на ajax заявката //в противен случай броячът ще се провали $.ajaxSetup((cache: false)); var html ; $.ajax (( //как ще прехвърлим тип данни: "GET", //къде ще прехвърлим url: "count.php", //какви данни ще прехвърлим данни: (флаг: 2), // събитие след получаване на отговор от count.php success : function(data)( html=data; //показва текущия брой изтегляния $("#countView").html(html); ) )); /*прикачване на събитие към бутона за изтегляне на файла*/ var clickevent=false; //кликнете тестов флаг //кликнете манипулатор $("#btnSend").click(function())( if(!clickevent)( $.ajax(( //how ще прехвърлим тип данни: "GET", //къде ще ги прехвърлим url: "count.php", //какви данни предаваме data: (флаг: 1), //събитие преди изпращане на ajax beforeSend: функция( ))( //ако бутонът е щракнат тогава true clickevent=true; ), //събитие след получаване на отговора, //получаване на данните в успех на данните: функция(данни)( //след приключване на действията, ние го разрешаваме отново //за обработка на щракването върху бутона clickevent=false;

    html=данни; // показване на нов брояч $("#countView").html(html); //получаване на връзката от data-download //пренасочване към връзката за изтегляне, изтегляне на файла window.location.href = $("#btnSend").data("download");

    Функция clearInt ($date)( //намалява датата до неотрицателно число връща abs((int)$date); ) if($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest") ( //проверете кой флаг е бил получен ако (clearInt($_GET["flag"]==1)) ( //отваряне на файла за четене $f=fopen("mycount.txt","a+"); //затваря достъпа до файла от други програми flock($f,LOCK_EX); //вземете стойността на брояча от файла $count=fread($f,100); //добавете брояча @$count++; ; //записване на новата стойност на брояча ($f,$count); //затваряне на файла fclose($f); //връщане на стойността echo $count; =2)) ( $c=fopen(" mycount.txt","a+"); flock($c,LOCK_EX); $festc=fread($c,100); fclose($c); //връща стойност ехо $festc;

    Тук мисля същото, всичко е просто. Ако пристигне флаг 1, тогава пренаписваме брояча. Ако се появи флаг 2, данните за броя на изтеглянията просто се връщат. Всичко останало, мисля, е ясно от коментарите в кода.

    Брояч за изтегляне на Joomla

    Реших да прикача подобен брояч към един от моите Joomla проекти. На теория, разбира се, трябва да напишете или отделен модул, или да интегрирате кода в контролера на компонента на съдържанието на com, така че данните от брояча да се записват не във файл, а в базата данни и за всяка статия поотделно. Но няма време за такова развитие и реших проблема по-просто. Имах нужда от брояча за една страница. Взех файла count.php и го прехвърлих в темплейта на Joomla, който в момента е свързан (в корена на сайта templates/your_template). Не забравяйте да вмъкнете дефинирания код ("_JEXEC") или умрете в самия връх на count.php. (това е за Joomla). Вмъкваме бутона за изтегляне в страницата, която създаваме, а js кодът също може да бъде вграден в страницата или свързан като отделен файл. Аз например го имам като отделен файл (намира се в папката js на шаблона). В самия шаблон, в заглавката, връзката става чрез код