Гэр / Windows хичээлүүд / PHP болон MySQL ашиглан файл татаж авах тоолуур үүсгэнэ үү. Татаж авах тоолуурыг суулгаж байна - сонгосон файлуудын WordPress Counter-д зориулсан залгаасуудын тойм

PHP болон MySQL ашиглан файл татаж авах тоолуур үүсгэнэ үү. Татаж авах тоолуурыг суулгаж байна - сонгосон файлуудын WordPress Counter-д зориулсан залгаасуудын тойм

Удаан хугацааны турш PHP болон MySQL-ийн талаар хичээл байхгүй байсан. Өнөөдөр бид энгийн боловч үр дүнтэй татаж авах тоолуур үүсгэх болно.

Файл бүр мэдээллийн сангийн хүснэгтийн мөрөнд оруулгатай байна. Татан авсан файлын тоог ижил хүснэгтэд хадгална. PHP мэдээллийн санг шинэчлэх болно MySQL мөн хэрэглэгчийг шаардлагатай файл руу дахин чиглүүлэх.

Аливаа файлын татан авалтын тоог хянахын тулд та үүнийг хавтсанд хийх хэрэгтэйфайлууд мөн түүнд хандахын тулд тусгай URL ашиглана уу.

1-р алхам - XHTML

Эхний алхам бол бидний скриптийн тэмдэглэгээг үүсгэх явдал юм. Энэ нь маш энгийн - бидэнд байна div файлын менежер, Жагсаалтын элемент бүр файлыг хариуцах эрэмблэгдээгүй жагсаалтыг агуулдаг.

Татан авалтыг хянахыг хүссэн файлууд хавтсанд байрланафайлууд скриптийн үндсэн хавтсанд. PHP дараа нь бүх файлуудыг давтаж, тус бүрийг жагсаалтын зүйл болгон нэмнэ (ли ) дараалалгүй жагсаалт руу.

demo.php


  • photoShoot-1.0.zip 0 татаж авах

шинж чанар гэдгийг анхаарна уу href холбоосууд файлын нэрийг параметр болгон дамжуулдаг download.php. Эндээс татан авалтын хяналт орж ирдэг.

Та бүх зүйлийг ижил байдлаар харуулах шаардлагагүй - та зүгээр л холбох боломжтой download.php таны хуудсан дээрх бүх таталтууд өнгөрөхгүй.

Алхам 2 - css

Тэмдэглэгээ хийсний дараа дизайн руу шилжье. css доорх дүрмүүд хамаарна div файлын менежер (# тэмдэг), Учир нь энэ нь хуудсан дээр зөвхөн 1 удаа, бусад элементүүдэд ангийн нэрээр гардаг.

styles.css

#файлын менежер(арын дэвсгэр өнгө:#EEE; хүрээ:1px хатуу #DDD; захын зай:50px авто; дэвсгэр:10px; өргөн:400px; )
ul.manager li( background:url("img/bg_gradient.gif") давталт-x төв доод #F5F5F5; хүрээ:1px хатуу #DDD; хүрээ-дээд-өнгө:#FFF; жагсаалтын загвар: байхгүй; байрлал:харьцангуй ; ) ul.manager li a( display:block; padding:8px; ) ul.manager li a:hover .download-label( /* Хүрээлэн дээр, ногоон татаж авах текстийг харуулах: */ дэлгэц:блок; ) span. татаж авах- шошго( дэвсгэр өнгө:#64B126; хүрээ:1px хатуу #4E9416; өнгө:цагаан; дэлгэц:байхгүй; үсгийн хэмжээ:10px; дэвсгэр:2px 4px; байрлал: үнэмлэхүй; баруун:8px; бичвэр чимэглэл: байхгүй ; текст -сүүдэр: 0 0 1px #315D0D; дээд: 6px; /* CSS3 дугуйрсан булан */
-moz-border-radius:3px; -webkit-border-radius:3px; хилийн радиус: 3px; ) span.download-count( өнгө:#999; үсгийн хэмжээ:10px; дэвсгэр:3px 5px; байрлал: үнэмлэхүй; текстийн чимэглэл: байхгүй; )

Алхам 3 -PHP

Өмнө нь хэлсэнчлэн PHP нь файлын хавтсанд байгаа файлуудыг хайж, файл бүрийг эрэмбэлэгдээгүй жагсаалтын жагсаалтын зүйл болгон жагсаадаг. Энэ нь хэрхэн явагдаж байгааг харцгаая

demo.php- дээд хэсэг

// Coo тайлангийн алдаа: алдааны_мэдээлэл(E_ALL^E_NOTICE); // : "connect.php" шаардлагатай; $extension=""; $файлуудын_массив = массив(); /* Фолдерыг нээгээд бүх файлыг шалгана уу: */ $dir_handle = @opendir($директор) эсвэл үхэх("Таны файлын лавлахад алдаа гарлаа!"); байхад ($файл = readdir($dir_handle)) ( /* алгасах системийн файлууд : */ if($file(0)==".") үргэлжлүүлэх; /* Төгсгөл() массивын сүүлчийн элементийг буцаана функцээр үүсгэгдсэн explode(): */ $extension = strtolower(төгсгөл(дэлбэрэх(".",$файл))); /* php файлуудыг алгасах: */ if($ өргөтгөл == "php") үргэлжлүүлэх; $files_array=$файл; ) /* Файлуудыг цагаан толгойн дарааллаар эрэмбэлэх*/ эрэмбэлэх($файлуудын_массив, SORT_STRING); $file_downloads=array(); $үр дүн = mysql_query("Татаж авах_менежерээс сонгох *"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* Массив түлхүүр $file_downloads файлын нэр байх болно, мөн татан авалтын тоог агуулна: */ $file_downloads[$мөр["файлын нэр"]]=$мөр["татаж авах"]; )

Бид хэрхэн mysql_query() ашиглан download_manager хүснэгтээс бүх мөрийг сонгоод дараа нь $file_downloads массив руу файлын нэрээр татаж авах тоог түлхүүр болгон нэмдэг болохыг анхаарна уу. Тиймээс, дараа нь кодонд бид $file_downloads["archive.zip"] гэж бичиж, татан авалтын тоог хэвлэж болно.

Жагсаалтын элементүүдийг үүсгэдэг кодыг доороос харж болно.

demo.php- дунд хэсэг

Foreach($файлуудын_массив нь $түлхүүр=>$val) ( echo "

  • ".$val." ".(int)$file_downloads[$val]." татаж авах
  • "; }

    Бүх зүйл зүгээр л $files_array массивын foreach давталтаар хийгддэг. Үүний дараа бүх зүйл echo ашиглан гарна.

    Одоо файлын хяналт хэрхэн ажилладаг талаар дэлгэрэнгүй харцгаая.

    download.php

    // Алдаа шалгах : алдааны_мэдээлэл(E_ALL^E_NOTICE); // db холболтын файлыг идэвхжүүлнэ үү: require("connect.php"); if(!$_GET["файл"]) алдаа("Параметр алга!"); if($_GET["файл"](0)==".") алдаа("Буруу файл!"); if(file_exists($директор."/".$_GET["файл"])) ( /* Хэрэв зочин нь хайлтын робот биш юм, татан авалтыг тоол: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filename="".mysql_real_escape_string($_GET["file"])."" ДАВХАР ТҮЛХҮҮРИЙН ШИНЭЧЛЭЛТ татан авалт=татаж авах+1"); header("Байршил: ".$директор."/".$_GET["файл"]); гарах; ) else 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) буцаах үнэн; // Бот уу ) худал буцаана; // Бот биш)

    Таны зочин хүн эсвэл хайлтын системийн робот эсэхийг шалгах нь чухал юм. Роботууд сайхан, гэхдээ бидний статистикийг гуйвуулахыг бүү зөвшөөр. Ийм учраас мэдээллийн сан дахь мөр нь зөвхөн is_bot() шалгасны дараа шинэчлэгддэг.

    Алхам 4 -MySQL

    Сүүлийн алхам дээр дурдсанчлан татан авалтын тоог download_manager хүснэгтэд мөр болгон хадгалдаг. Эхлээд энэ асуулга хэрхэн ажилладагийг тайлбарлая:

    download.php

    INSERT INTO download_manager SET filename="filename.doc" ДАВХАР ТҮЛХҮҮРИЙН ШИНЭЧЛЭЛТ Татаж авах=татаж авах+1

    Энэ нь MySQL-д download_manager хүснэгтэд шинэ мөр оруулахыг хэлж, файлын нэрийн мөрийн талбарыг татаж авах гэж буй файлын утгад тохируулна. Гэсэн хэдий ч файлын нэрийн талбарыг дараах байдлаар тэмдэглэв өвөрмөц индексхүснэгтэд. Энэ нь мөр бүрийг зөвхөн нэг удаа оруулах боломжтой, эс тэгвээс давхардсан түлхүүрийн алдаа гарна гэсэн үг.

    Энэ нь асуулгын хоёр дахь хэсэг ажиллах болно - ДАВХАРСАН ТҮЛХҮҮРИЙН ШИНЭЧЛЭЛТ нь өгөгдлийн санд файл байгаа бол MySQL-д татаж авах баганад нэгийг нэмэхийг хэлэх болно.

    Тиймээс эхний татаж авах үед шинэ файлууд автоматаар мэдээллийн санд нэмэгдэх болно.

    Алхам 5 - jQuery

    Бодит цагийн хяналтыг хийхийн тулд татаж авах бүрийн дараа файлын нэрний хажууд байгаа тоолуурыг шинэчлэх нь зүйтэй юм.

    Бид үүнийг jQuery ашиглан хийх болно:

    script.js

    $(баримт бичиг).бэлэн(функц()( /* Хуудсыг ачаалсны дараа кодыг гүйцэтгэнэ*/ $("ul.manager a").click(function()( var countSpan = $(".download-count", энэ); countSpan.text(parseInt(countSpan.text())+1); ) ); )))

    Бид зүгээр л файл руу хөтөлдөг холбоосуудад товшилтын зохицуулагчийг томилж, товшилт бүр дээр утгыг нэмдэг.

    Алхам 6 -htaccess

    Бас нэг зүйл хийх шаардлагатай байна. Download.php нь хэрэглэгчийг параметр болгон дамжуулсан хүссэн файл руу дахин чиглүүлэх болно. Гэсэн хэдий ч хөтчүүд зарим төрлийн файлуудыг шууд нээхийг оролддогийг та анзаарсан байх. Бид мөн тэдгээрийг татаж авах ажлыг эхлүүлэх хэрэгтэй. Үүнийг файлын хавтсанд байрлах .htacess файлын доторх цөөн хэдэн мөрөөр хийж болно.

    ForceType application/octet-stream

    Одоо манай тоолуур бүрэн бэлэн боллоо!

    Дүгнэлт

    Демо ажиллахын тулд та MySQL мэдээллийн сан дахь download_manager хүснэгтийг дахин үүсгэх хэрэгтэй. Та шаардлагатай SQL кодыг эх сурвалжаас олж болно.

    Үүний дараа configuration.php файлд өгөгдлийн санд холбогдох өгөгдлөө нэмнэ үү.

    Саяхан миний мадаггүй зөв зохиогчийн төслийг бий болгоход сонирхож байсан дараагийн асуулт бол энд байрлуулсан тодорхой файлын татан авалтын тоог хэрхэн тоолох тухай асуулт байв. Энэ нь өөр залгаас шаарддаг гэж үзэх нь хамгийн логик байсан, зарим нь татаж авах менежер, эсвэл илүү хялбар нь - татаж авах тоолуур. Интернетээс хайсны дараа эдгээр залгаасууд нь ердийнх шигээ вагон, жижиг тэрэг юм. Гэхдээ тэдний тойм - дахин, үгүй. Юу сонгох нь тодорхойгүй байгаа бөгөөд ердийнхөөрөө би бүх зүйлийг өөрөө туршиж үзэх хэрэгтэй болсон. Туршилтын үр дүнгээс харахад энэ тоймч гарч ирэв. Энэ нь маш удаан хугацаанд бичигдсэн боловч зорилго нь дээрх бүх залгаасуудыг тохиргоог нь бүрэн хянаж үзээгүй тул та тус бүрийн нарийвчилсан дэлгэцийн агшинг олохгүй, гэхдээ гол тохиргоонууд энд байна. Би зарим зүйлийн талаар огт ярихыг хүсээгүй - тэд үнэхээр тэнэг байсан, гэхдээ би аль хэдийн харсан бол юу ч бичихгүй байх нь харамсалтай байсан.

    Оршил.

    Тиймээс WordPress-ийн татаж авах тоолуурыг тохируулах замаар тухайн файлын татан авалтын тоог тоолох даалгавар байв. Нарийвчилсан шалгалтын дараа энэ нь хэд хэдэн дэд даалгавруудад хуваагдсан, эс тэгвээс үүнийг гүйцэтгэх нэмэлт өргөтгөлийг хүсч байна. Тэдгээрийн товч жагсаалтыг энд оруулав.

    • Татан авалтын тоог админ самбарын хаа нэгтээ харуулах шаардлагатай бөгөөд эрэмбэлэх чадвартай байх шаардлагатай - өдөрт хэдэн удаа, долоо хоногт, сар, жил, нийт татагдсан.
    • Та бие биентэйгээ харьцуулахад файл татаж авах график / диаграммыг үзэх нь зүйтэй юм
    • Цаг хугацаа өнгөрөхөд файл татаж авах график / диаграммыг харах нь зүйтэй юм
    • Файлыг хамгийн сүүлд татаж авсан үед статистик мэдээллийг хадгалах нь зүйтэй
    • Дөнгөж татаж авах гэж буй хэрэглэгчийн хувьд файлыг хэдэн удаа татсан, хэмжээ, татаж авах огноо зэргийг линкийн хажууд харуулах боломжтой. За, харуулахгүй - админы хүсэлтээр
    • Үүнийг хариуцах кодыг TinyMCE засварлагчийн нийтлэлийн самбарт тусдаа товчлуураар оруулах чадвар (би хурдан шошго ашиглах дургүй)
    • Татаж авах хурдыг хязгаарлах чадвар (ямар ч тохиолдолд)
    • Энэ залгаас руу байршуулах функцийг хавсаргах (серверт файл байршуулах) - эсрэгээр нь бууж өгөөгүй. FTP надад бас сайн ажилладаг. Гэхдээ нэг их саад болохгүй бол үлдээгээрэй
    • Татаж авах холбоос дээр үзэсгэлэнтэй товчлуурыг нааж чадвал сайхан байх болно - гэхдээ би зөвхөн анги = "товч" гэж бичих хэрэгтэй.

    ABAP

    Файлыг татах!

    • За, хэрэв та зөвхөн өөрийн сайтаас биш, зүгээр л холбоосоос татаж авсан тоог тоолвол
    • Файлыг сервер дээр хаана байгааг харуулахгүйгээр шууд татаж авахыг хориглох боломж.

    Энэ бол ийм жижиг жагсаалт юм.

    Шүүмж

    TOR-ийн талаар шийдсэний дараа бид шууд санал болгож буй зүйлийг авч үзэх болно.

    1. Plugin Download Counter 1.2, эндээс татаж авна уу.

    Эхэндээ залгаасын хуудас байрладаг байсан боловч зохиогч үүнийг 4 жилээс илүү хугацаанд дэмжээгүй байна. Бид надад зориулж залгаасуудын лавлах хэсэгт өөр хавтас үүсгэдэг - татаж авах тоолуур, хоёр файлыг тэнд шид. Үүний үр дүнд - та хаана гэж бодож байна вэ? - түүний тохиргоо бичлэг дээр гарч ирнэ. Маш анхны, гэхдээ зүгээр.

    Бид дотогшоо орж, download-manager.php файл руу орох замыг бичнэ (Би ямар ч утгагүй зүйлийг шууд үндсээр нь хаях дургүй). Тэгээд бидэнд юу байгааг хараарай. Файлыг байршуулж, татаж авсан эсэхийг шалгана уу гарын авлагын горим, хэрэв та хөтөч дээр шууд холбоос оруулбал тоолуур үүсгэхийн тулд залгаас дахь замыг оруулна уу. Онолын хувьд ID үүсгэх ёстой бөгөөд дараа нь хаа сайгүй оруулах шаардлагатай болно. Гэхдээ юу ч болоогүй - энэ нь "Алдаа - Бичлэгийг хадгалах боломжгүй" гэсэн алдаа өгдөг. За, за, бид ятгасан, бид үүнийг download-manager.php root руу шилжүүлсэн - дахин юу ч биш, ижил алдаа. За, алтан загас минь, чамд там, зохиолчийн бууж өгөөгүй залгаасуудыг ойлгох нь надад хангалтгүй байсан. Түүнээс гадна функциональ байдал нь бараг тэг юм.

    2. Plugin Download Counter Advanced 1.1, мөн адил татаж авсан.

    Энэ нь надад үнэхээр тохирохгүй гэдгийг би шууд хэлэх болно, тиймээс та түүний суулгалт, тохиргооны талаар зөвхөн эрдэм шинжилгээний сонирхлын үүднээс уншиж болно. Үнэн хэрэгтээ энэ нь ижил залгаас бөгөөд зөвхөн бага зэрэг өөрчлөгдсөн. Бурханд баярлалаа, заавар нь орчуулагдаагүй ч гэсэн та үүнийг ердийн байдлаар уншиж болно, харин орчуулагч юу гэж хэлснийг ойлгохыг хичээх хэрэггүй. Дашрамд хэлэхэд, админ самбар дээр - энэ нь шинэчлэхийг санал болгож байгаа огт өөр залгаас юм шиг байна (тиймээ, инжир). Өмнөх залгаастай адил хуудас нь байрлаж байсан бөгөөд үүнтэй адил зохиогч үүнийг 4 жилээс илүү хугацаанд дэмжээгүй байна. Үүнтэй адилаар бид залгаасуудын лавлах хэсэгт өөр хавтас үүсгэдэг, минийх бол татаж авах тоолуур, бид бүх файлыг тэнд хаядаг. Тохиргоо нь мэдээжийн хэрэг илүү баялаг харагдаж байна, гэхдээ татаж авах хурд нь бүх файлд нэн даруй хязгаарлагддаг бөгөөд тус бүрдээ тус тусад нь тохируулаагүй болно. Download-manager..php файл хаана байна (хамгийн төгсгөлд байгаа файлын нэрийг бүү мартаарай, гэхдээ бүх татан авалт нь хаана байна - би анх удаа таасан. Энэ нь намайг аймшигтай гайхшралд автуулсан. Дараа нь тодорхой болсон тул би үүнийг таамаглаж байсан. Татаж авах лавлахын нэрээр энд миний логик залгаасын зохиогчтой 100% адилхан ажилласан.

    Файл руу очих замыг сонгоход хялбар болгохын тулд бид сервер дээр байгаа фолдеруудын нэрийг татаж авах санд ("Ангилал ба лавлах" тохиргоонд) нэмдэг. Хэрэв та тэдгээрийг нэмэхгүй бол та бүх зүйлийг татан авалтын үндэс рүү татаж авах хэрэгтэй болно. Хадгалах, та татаж авах зүйл нэмж болно. Эндээс бид ойролцоогоор юу авдаг.

    Одоо бид нийтлэлд оруулахыг хичээж байна. Бид холбоосыг нэмж, дотор нь залгаасын тохиргоонд шууд гаргасан код руу холбоосоо өөрчилдөг. Тэгээд дараа нь ... Мөн танд инжир! HTTP алдаа 500 (Дотоод серверийн алдаа): Сервер хүсэлтийг биелүүлэхийг оролдож байх үед гэнэтийн нөхцөл байдал үүссэн. За тэгээд шууд бичлэг дээр тоолуур яаж нэмэх вэ, дотор нь байгаа линк байвал яах вэ гэж хэлэх гэж байсан юм үүнийг хэрэгжүүлэхийн тулд

    ABAP

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

    дараа нь та татаж авах товчийг харуулах болно - муруй, үнэхээр. Энэ бол танд зориулсан залгаас, цагаа дэмий үрсэн. Тэр ялангуяа статистик хөтөлдөггүй, учир нь алдаа хаана байгааг бид ойлгохгүй.

    Энэ бол дээрх Download Counter Advanced програмыг шинэчлэхээр санал болгосон залгаас юм. За, тэр санал болгож байна - за, татаж авцгаая, харцгаая. Энэхүү залгаасыг 3 жилээс илүү хугацаанд шинэчлээгүй бөгөөд зарим хэрэглэгчид өөрсдөө кодоо залруулга хийсэн. Энэ нь нэлээд амжилттай суурилуулагдсан бөгөөд тохиргооны даяанч байдал нь өөдрөг үзлийг өдөөдөггүй. Дашрамд хэлэхэд, бас сайн хийсэн, тэд тохиргоог хаана байрлуулахаа таамаглаж байсан - өмнөх тохиолдлоос дордохгүй. Бид тохиргооны хуудсан дээр тоолуур нэмдэг тул бүх зүйлийг онцолсон байх ёстой.

    Нийтлэлийн нэмэлтээр юу байгааг харцгаая. Тийм ээ, товчлуур байхгүй. Мэдээжийн хэрэг, би тэнд мартсан, бүх зүйл зөн совинтой байдаг. Заавар руугаа явцгаая. , татаж авсан гэх мэт богино кодуудаас бүрдэх нарийн төвөгтэй бүтцийг хаах шаардлагатай бөгөөд тэр үед (магадгүй NC-тэй холбоотой байж магадгүй) юу ч тоохгүй.

    Тиймээс, мэдээллийг график хэлбэрээр харуулдаг Татаж авах Counter Chart залгаастай хамт цаашид авч үзэхгүй.

    Манай эх оронч бичсэн боловч харамсалтай нь түүний хийж чадах цорын ганц зүйл бол файлыг татаж авсан хүмүүсийн тоог нэрнийх нь хажууд харуулах явдал юм - статистик мэдээлэл ч, бусад сайн зүйл ч байхгүй. Гэсэн хэдий ч, хэрэв та минимализмын шүтэн бишрэгч бол энэ нь танд хэрэгтэй зүйл юм. Зүгээр л битгий мартаарай, товчлуур байхгүй, богино код гэх мэт


    Wordpress-д зориулсан өөрийн гараар татаж авах тоолуур

    гараар оруулах шаардлагатай болно. Зохиогч бүх зүйлийг нарийвчлан зурсан нь маш сайн хэрэг, би үүнийг өөрөө туршиж үзээгүй.

    Хэрэв бид манай хүмүүсийн бичсэн залгаасуудын талаар ярих юм бол дахиад нэгийг дурьдах нь зүйтэй. Үүний асар том давуу тал нь энэ нь танд зөвхөн татаж авсан файлуудын тоог тоолох төдийгүй зүгээр л холбоос дээр дарах боломжийг олгодог - тэдгээр нь ямар нэгэн файл эсвэл өөр хуудас руу хөтлөх нь хамаагүй. Эсвэл хэн нэгний хуудсан дээрх файл руу 🙂 Тэр үүнийг бас тооцоолох болно, эс тэгвээс онолын хувьд тооцоолох ёстой. Түүний статистик мэдээлэл бас тийм ч халуун биш, засварлах самбар дээр товчлуур байхгүй, татаж авахад ямар ч хязгаарлалт байхгүй. Гэхдээ харах нь сонирхолтой хэвээр байна. Тиймээс татаж аваад суулгана уу. Үндсэндээ хангалттай Дэлгэрэнгүй тодорхойлолтЗохиогчийн вэбсайт дээр байгаа тул би үүнийг нэг их түгээхгүй. Хэрэв та файл эсвэл холбоос дээр тоолуур тавихыг хүсвэл тухайн төрлийн богино код ашиглах эсвэл холбоос дээр class = "count" классыг оруулах хэрэгтэй гэдгийг үргэлж санаж байх ёстой. Энэ нь мэдээжийн хэрэг ядаргаатай, товчлууртай бол илүү тохиромжтой байх болно. Гэхдээ хамгийн ядаргаатай зүйл бол бүх дохио зангаа хийсний дараа би үүнийг хангалттай ажиллуулж чадахгүй байна - хэрэв богино код ашигласан бол татаж авах линк нь өөрөө харагдахгүй, хэрэв анги ашигласан бол холбоосын статистик харагдахгүй байна. админ самбар дээр гарч ирнэ. Дэлгэцийн агшинг зохиогчоос үзэх боломжтой - хэрэв танд санаа нь өөрөө таалагдаж байвал оролдоод үзээрэй, магадгүй та амжилтанд хүрэх болно.

    Үнэн, маш энгийн. Богино код гэх мэт шаардлагагүй. Гэсэн хэдий ч энэ залгаас нь зөвхөн зохиогчийн статистик мэдээллийг өгдөг боловч зочдод файлын холбоосын хажууд харагдахгүй байна.

    Гэхдээ хэн ямар файлыг хэзээ татсан тухай нарийвчилсан статистикийг хөтөлдөг гэдгийг хэлэх хэрэгтэй. Гэсэн хэдий ч үүнийг ашиглах нь тийм ч тохиромжтой биш юм.

    Тохиргоонд дараахь зүйлс орно.

    • Та ямар файлуудыг татаж авахыг зөвшөөрсөн лавлахыг зааж өгч болно
    • Та татаж авахыг зөвшөөрсөн файлын төрлийг зааж өгч болно
    • Файлыг зохиогчоор татаж авахыг идэвхгүй болгох
    • Нэг IP-ээс холбоос дээр давтагдсан товшилтыг зөвхөн нэг удаа тоолох интервалыг секундээр тохируулна уу
    • Өдөрт нэг IP-ээс татаж авах файлын тоог хязгаарла
    • Татаж авах ажиллагаа эхлэх тухай мэдээлэл бүхий завсрын хуудсыг ашиглана уу

    Гэсэн хэдий ч, та .htaccess файлыг засварлах зөвшөөрөлтэй эсвэл холбоосыг шууд оруулах замаар зааж өгсөн тохиолдолд л энэ бүхэн ажиллах болно.

    Гэсэн хэдий ч, энэ нь хэрэглэгчдэд зориулсан статистикийг харуулах чадваргүй байсан бөгөөд би холбоосын төрлийг санахыг хүсээгүй тул дараалалд байгаа бусад залгаасууд даалгаврыг шийдэж чадахгүй бол л буцаахаар шийдсэн. .

    Мэдээллийг харуулахын тулд энэ залгаас нь өмнөх догол мөрөнд дурдсантай маш төстэй юм. Энэ нь долоо хоног бүр, сар бүр, аль ч хугацаанд, зөвхөн эхний 10-т орсон статистик мэдээллийг тусад нь үзэх боломжийг олгодог гэдгээрээ ялгаатай. Түүний чадавхийн хувьд энэ нь илүү өрөвдөлтэй, хамгийн сүүлд татаж авсан эсвэл тодорхой файл дээр ямар ч статистик мэдээлэл байхгүй, тэр дундаа файлуудыг татаж авахад хязгаарлалт тавих боломжийг дурдахгүй. Тодорхой бичиг баримт огт байхгүй. Энэ бол зүгээр л нэг төрлийн үл ойлголцол болохоос залгаас биш юм шиг сэтгэгдэл надад төрсөн. Би дэлгэцийн агшинг ч өгөхийг хүсэхгүй байгаа ч бодитой байхын тулд би тэдэнд зохиогчийн эрхийг өгөх болно.

    За, бид илүү их эсвэл бага үнэ цэнэтэй зүйлд хүрлээ. Бараг хагас сая татан авалт ямар нэг зүйлийг хэлж байна. Албан ёсны хуудасзалгаас байрладаг. Нийтлэлд файл оруулахын тулд та визуал засварлагч дээрх сумыг ашиглах хэрэгтэй (тэдгээр нь өөрөө харагдахгүй байна)

    Гарч ирсэн цонхон дээр шаардлагатай файлыг сонгоно уу (энэ нь FTP-ээр аль хэдийн байршуулсан бол жишээ юм)

    Дараа нь "Шинэ татаж авах хадгалах" товчийг дарна уу

    Дараагийн дэлгэц рүү очоод татаж авах форматыг сонгоод дээр дарна уу руу оруулахбичлэг. Юу ч болохгүй байх магадлалтай. Plugin нь бага зэрэг алдаатай байна хамгийн сүүлийн үеийн хувилбарууд wordpress. Тиймээс та "Татаж авахыг харах" холбоос дээр нэмэлт дарах хэрэгтэй

    Тэгээд аль хэдийн эхлээд татаж авах форматыг сонгох, оруулахыг хүссэн файлынхаа хажууд байгаа Insert холбоос дээр дарна уу.

    Үүний дараа тухайн төрлийн холбогдох богино код нийтлэлд гарч ирнэ

    ABAP

    [татаж авах = "7592" формат = "1"]

    Plugin нь нимгэн байхыг шаарддаг гарын авлагын тохиргоо, гэхдээ WYSIWYG байхгүй байна. Сайн зүйл бол та үүнийг зөвхөн нэг удаа тохируулах хэрэгтэй. Нарийвчилсан баримт бичгийг зохиогч дээр бичсэн болно.

    Энд жишээ тохиргоо байна:

    ABAP

    (гарчиг)

    < ahref = "(url)" title="(!LANG:Татаж авсан)"ни разу","1 раз","% раза"}">{title}!}

    Энэ нь хасах нь дэмжигдээгүй гэдгийг тэмдэглэх нь зүйтэй, өөрөөр хэлбэл. Хэрэв файлыг 21 удаа татаж авсан бөгөөд таны загварт "цаг" байгаа бол энэ нь орос хэлнээс бага зэрэг сонсогдох болно.

    Энд товчлуурын сонголт байна:

    ABAP

    - (тайлбар), (хэмжээ), Татаж авсан (огноо, "Y-m-d"), Татаж авсан (үзсэн) цаг

    < ahref = "(url)" title="(!LANG:Татаж авсан)"ни разу","1 раз","% раза"}">!} - (тайлбар), (хэмжээ), Татаж авсан (огноо, "Y-m-d"), Татаж авсан (үзсэн) цаг

    Ийм харагдаж байна:

    За, жаахан сайжруулсны дараа энэ нь иймэрхүү харагдаж эхлэв (товчлуургүй хэвээр байна):

    Шугамын код:

    ABAP

    (файлын_дүрс) (гарчиг)(Файлын хэмжээ: (хэмжээ), Байршуулсан: (огноо, "d.m.Y"), Татаж авсан (үзэгдсэн) цаг)
    (тайлбар)

    Боломжуудын жагсаалт нэлээд өргөн байна:

    • Та тэдгээрийн тусламжтайгаар файлуудыг хоёуланг нь байршуулж болно (сум дээр дарж), хаана байгааг нь зааж өгөх боломжтой, хэрэв өмнө нь FTP-ээр байршуулсан бол URL хаягийг зааж өгч болно.
    • Файлын жинхэнэ байршлыг нуудаг тул та шаардлагатай дурын URL хослолыг орлуулж болно
    • Та татаж авах товчийг, түүний дотор өөрийн гэсэн товчлуурыг ашиглаж болно
    • Админаас татаж авсан файлуудыг бүү тоолоорой, мөн эсрэг заалтуудын жагсаалтад багтсан бүх шаардлагагүй IP хаягууд
    • Нэг IP-ээс тодорхой хугацаанд давтан татан авалтыг тоолох эсэх
    • Та хэд хэдэн форматыг тохируулж болно - зурагтай, тоолууртай, тоолуургүй гэх мэт, тэдгээрийн аль нэгийг тохирох нөхцөлд ашиглаж болно.
    • Маягт дээр татан авалтын бүртгэлийг буулгаж байна csv файла

    Хэрэв ямар нэгэн mp3 эсвэл видео файл байршуулсан бол та тэдгээрт зориулж зааж өгөх, албадан татаж авах, үгүй ​​​​болгох хэрэгтэй. Хүчтэй байвал үүн дээр дарснаар татан авч, тэмдэглээгүй бол тоглуулж, хулганы баруун товчийг дарж хадгална. Түүний тусламжтайгаар байршуулсан файлууд нь таны файлын тусгай лавлах үүсгэгдсэн газар биш, харин түүгээр үүсгэгдсэн wp-content/uploads/downloads/ дотор байрладаг гэдгийг тэмдэглэхийг хүсч байна - та үүнийг санаж байх хэрэгтэй. статистикаас тэдгээрийг устгах үед - физик файлууд серверээс мөн устгагдана. FTP-ээр байршуулсан хүмүүсийн хувьд бүх зүйл хэвийн байна. Нэмж хэлэхэд, хэрэв та өөр өөр нийтлэлд нэг файл руу холбоос оруулах юм бол энэ нь тэдгээрийг нэгтгэн харуулах эсэхийг би ойлгосонгүй. Харамсалтай нь, та бүртгэлтэй хэрэглэгчээс бусад бүх хүн татаж авахаас сэргийлж болохоос бусад тохиолдолд татаж авах хязгаарлалтыг дэмждэггүй. Хэрэв та хөтчийн доод мөрөнд файлын нэрийг харуулахыг хүсч байгаа эсвэл ID болгон өөрчлөх шаардлагатай бол тохиргоо-> байнгын холбоосууд руу орж тохиргоогоо хадгалах хэрэгтэй бөгөөд ингэснээр бүх зүйл зөв бүртгэгдсэн болно. .htaccess-д - Үүнгүйгээр файлуудыг татаж авахгүй.!

    Статистикийг нэг дор гурван газар харуулдаг - консол, файлын мэдээлэл, татаж авах лог. Энэ нь зарим нэг таагүй байдлыг бий болгодог, жишээлбэл, файлыг хамгийн сүүлд хэзээ татсаныг харах шаардлагатай үед статистик мэдээллийг csv файл хэлбэрээр байршуулж, дараа нь Excel дээр эрэмбэлэх боломжтой. Excel нь шаардлагатай хүснэгт, диаграммыг бүтээх чөтгөрийн чадвартай гэдгийг харгалзан үзвэл энэ нь тийм ч муу биш байж магадгүй юм. Гэсэн хэдий ч дэлгэцийн зургууд илүү их зүйлийг хэлэх болно гэж би бодож байна:

    За, бүртгэлийн дэлгэцийн агшин:

    Үүний зэрэгцээ маш том давуу тал нь виджет нь консол дээр дараах статистик мэдээлэлтэй гарч ирэх явдал юм.

    Ерөнхийдөө, бага зэрэг тохируулсны дараа залгаас нь үүргээ сайн гүйцэтгэдэг гэж хэлж болно.

    Энэ залгаасыг жишээ нь миний энэ сайтад ашигладаг WP-Polls залгаастай ижил зохиогч бичсэн. Хэдийгээр энэ нь үүнтэй харьцуулахад тийм ч алдартай биш юм. Гэхдээ энэ нь зохистой эсэхийг харцгаая. Бүх баримт бичгийг зохиогчийн вэбсайтаас олж болно. Үндсэндээ залгаас нь өмнөхтэй яг ижил байна - загвар нь ижил аргаар бичигдсэн, бүртгэлтэй эсвэл бүртгэлгүй хэрэглэгчээс бусад тохиолдолд татаж авахад ямар ч хязгаарлалт байхгүй, мөн маягтын богино кодыг ашиглах шаардлагатай.

    ABAP

    [татаж авах = "7592"]

    болон бусад цэгүүдийн хувьд:

    • Та түүний тусламжтайгаар файлуудыг хоёуланг нь (хоёр Мб хүртэл, эсвэл 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 ашиглан гоё фрэймүүдтэй холбоос хийх талаар бодож байгаа бөгөөд энэ талаар бас бичих болно. Бидэнтэй хамт байгаарай 🙂

    Upd. Одоо зохиогч зассан WordPress залгаасМониторыг татаж аваад эх хувилбараасаа тэс өөр хувилбарыг үүсгэсэн. Би үүнийг шалгаж үзсэн боловч татаж авах холбоос ямар байх тухай маягтын загвар нь одоо засварлахад тийм ч хялбар биш болсон тул энэ нь надад маш бага таалагдсан. Зохиогч нь бэлэн урьдчилан тохируулсан үзэл бодол хангалттай байх болно гэж шийдсэн. Жишээлбэл, татаж авах цэсэнд байгаа бол тохиргоог сонгоно уу хүссэн үзэмжУрьдчилан суулгасан зургаан зүйлээс хадгалах дээр дарна уу

    Дараа нь хоёр дахь сонголтыг сонгохдоо та дараах зүйлийг авах болно.

    Тэдгээр. дээр шинэ хувилбарМиний тайлбарт өгсөн мөрийг ашиглах нь ажиллахгүй боловч энэ гаралтын загварт тайлбарлах тусгай php файл бичих шаардлагатай болно. Гэхдээ хамгийн гунигтай зүйл нь энэ ч биш, гэхдээ энэ php файлыг залгаасын хамт директорт оруулбал залгаасыг шинэчлэх болгонд дарж бичигдэх болно. Хэрэв та үүнийг сэдэвтэй лавлахад байрлуулсан бол сэдвээ өөрчлөх үед (хэдийгээр энэ нь мэдээжийн хэрэг бага тохиолддог). Гэхдээ ямар ч байсан үүнийг бичих нь нэлээд хүнд ажил бөгөөд би үүнийг хийх хүсэлгүй байна. Тиймээс шинэчлэгдсэн залгаасын цорын ганц давуу тал

    Миний нэг скриптийг сайтаас хэдэн удаа татаж байгааг харахаар шийдсэн. Үүнийг хийхийн тулд би сайтад файл татаж авах тоолуур бичихээр шийдсэн. Интернет дээр энэ даалгаврын олон хэрэгжилт байдаг, гэхдээ миний шийдлийг уншина уу.

    Татаж авах тоолуурын логик нь маш энгийн. Үүнийг хэрэгжүүлэхийн тулд бид миний дуртай ajax ашиглах болно. clik үйл явдал тохиолдоход бид товчлуурыг дарж, ajax-ээр дамжуулан тоолуурын php файл руу залгана. Php дээр ajax хүсэлтийг боловсруулж, бичдэг текст файлнийт үсрэлтүүдийн тоо. Амжилттай бичлэг хийсний дараа нийт татан авалтын тоолууртай хариу ирж, хэрэглэгчийг файлыг татаж авах холбоос руу дахин чиглүүлнэ (файлыг татаж байна). Ийм энгийн логик энд байна. Одоо үүнийг хэрэгжүүлж эхэлцгээе. Татаж авах боломжтой test.zip файлыг урьдчилан үүсгэцгээе. Товчлуурын кодыг хийж, үсрэх тоолуурыг үзүүлье.

    Үсрэлтийн тоо:

    Бид id="btnSend" товчлуурыг үүсгэсэн, бид тоолуурыг id="countView" -тэй зайд харуулах бөгөөд татаж авсан файлын холбоосыг өгөгдөл-татаж авах шинж чанарт хадгална.

    Одоо товчлуур дээр дарах зохицуулагчийг хавсаргая. Энд бид аль хэдийн js болон jQuery ашиглах болно. Та jQuery ашиглан clik-ийг хэрхэн хэрэгжүүлэх талаар уншиж болно. Гэхдээ товшилтын зохицуулагчийг суулгахын өмнө бид тоолуурын бүх ажлыг агуулсан count.php файл руу ajax хандана. Та ajax өгөгдөл дамжуулах талаар илүү ихийг уншиж болно. Энэ нь тоолуурын бичиж буй файлаас аль хэдийн татагдсан татан авалтын тоог харуулахад шаардлагатай бөгөөд тэдгээрийг id="countView"-ээр харуулахад шаардлагатай.

    /*одоогийн татан авалтын тоог авах*/ $(баримт бичиг).ready(функц()( //кэшийн ajax хүсэлтийг хориглох // эс тэгвээс тоолуур амжилтгүй болно $.ajaxSetup((кэш: худал)); var html; $. ajax (( //бид өгөгдлийн төрлийг хэрхэн дамжуулах вэ: "GET", //бидний url хаяг: "count.php", //бид ямар өгөгдөл дамжуулах вэ: (туг: 2), //хариулт хүлээн авсны дараах үйл явдал count.php-ээс амжилт : function(data)( html=data; //одоогийн татан авалтын тоог гаргана $("#countView").html(html); ) )); /*файл татаж авах товчлуур дээр үйл явдал өлгөх */ var clickevent=false; //Шалгах туг дээр товшино уу //харагчийг дарна уу $("#btnSend").click(function()( if(!clickevent)( $.ajax(( //бид өгөгдлийн төрлийг хэрхэн илгээх вэ: "GET", //бидний url хаягийг дамжуулдаг газар: "count.php", //ямар өгөгдөл илгээх вэ: (туг: 1), //ajax илгээхээс өмнөх үйл явдал: function()( //товчлуур дээр дарагдсан бол. дараа нь true clickevent=true; ), //хариулт хүлээн авсны дараах үйл явдал, //өгөгдлийн амжилттай өгөгдөл авах: function(data)( //үйлдлүүдийг гүйцэтгэсний дараа дахин зөвшөөрнө //боловсруулж байна. товчлуур дээр дарна уу clickevent=false; html = өгөгдөл; //шинэ тоолуур гаргана $("#countView").html(html); //өгөгдлийн холбоосыг авах-татаж авах //татаж авах холбоос руу дахин чиглүүлэх, файлыг татаж авах window.location.href = $("#btnSend").data("татаж авах"); ))) ) худал буцаах;//товшилтоор үйл явдлыг боловсруулахыг хориглох )); )))

    Илгээх товчийг удаа дараа алдаатай дарахаас сэргийлэхийн тулд би скриптэд clickevent тугийг нэвтрүүлсэн. Count.php-ийн хариу шинэчлэгдсэн тоолуурын өгөгдөлтэй буцаж ирэх хүртэл товчлуур дээр дарахыг хориглоно. Товчлуур дээр дарсны дараа кодын ажил их эсвэл бага хэмжээгээр тодорхой болсон гэж би бодож байна. Татаж авах товчийг дарсны дараа өгөгдлийг count.php файл руу шилжүүлж, тэдгээрийг боловсруулж, шинэчилсэн тоологч өгөгдлийг буцааж, татаж авах холбоос руу дахин чиглүүлэх бөгөөд үүний дагуу файлыг татаж авна.

    Одоо скриптийнхээ гол хэсгийг, тухайлбал count.php файлыг задалцгаая.

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

    Энд би ижил зүйл энгийн гэж бодож байна. Хэрэв туг 1 ирвэл бид тоолуурыг дахин бичнэ. Хэрэв туг 2 гарч ирвэл татан авалтын тоог буцаана. Миний бодлоор бусад бүх зүйл кодын тайлбараас тодорхой харагдаж байна.

    Joomla татаж авах тоолуур

    Би joomla төслүүдийнхээ нэгэнд ижил төстэй тоолуур хавсаргахаар шийдсэн. Онолын хувьд мэдээжийн хэрэг та тусдаа модуль бичих эсвэл кодыг com контентын бүрэлдэхүүн хэсгийн хянагч руу нэгтгэх хэрэгтэй бөгөөд ингэснээр тоолуурын өгөгдлийг файлд биш, харин мэдээллийн санд, нийтлэл тус бүрээр тусад нь бичих хэрэгтэй. Гэхдээ ийм хөгжилд цаг хугацаа байхгүй тул би асуудлыг илүү энгийнээр шийдсэн. Надад нэг хуудасны тоолуур хэрэгтэй байсан. Би count.php файлыг аваад joomla загвар руу шилжүүлсэн Энэ мөчхолбогдсон (сайтын загварууд/таны_загваруудын үндэс дээр). count.php-ийн хамгийн дээд хэсэгт тодорхойлсон ("_JEXEC") эсвэл үхэх кодыг оруулахаа бүү мартаарай; (энэ нь joomla-д зориулагдсан). Бид татаж авах товчийг үүсгэж байгаа хуудсандаа оруулах ба js кодыг хуудас руу оруулах эсвэл холбох боломжтой. тусдаа файл. Жишээлбэл, надад тусдаа файл байна (энэ нь template js хавтсанд байрладаг). Загвар өөрөө, толгой хэсэгт холболтыг кодоор хийдэг

    Мөн ajax хүсэлтээр авахаа бүү мартаарай, бид url руу хандаж байна: "/index.php?tmpl=count" ба url биш: "count.php", . Яг үүнтэй адил би файл татаж авах тоолуурыг joomla руу шургууллаа.

    Тоолуурыг татаж авахын тулд энгийн зааврыг дагана уу.

    1. Суулгах файлыг татаж эхлэхийн тулд яг дээр байрлах "Серверээс татаж авах" цэнхэр товчийг дарна уу.
    2. Үүний дараа сервер суулгацын файлыг бэлтгэж, вирус байгаа эсэхийг шалгана.
    3. Хэрэв файл халдварлаагүй бөгөөд бүх зүйл хэвийн байвал "Татаж авах" саарал товчлуур гарч ирнэ.
    4. "Татаж авах" товчийг дарснаар файл таны компьютерт татагдах болно.

    Бид таныг уйтгартай бүртгэлийн процессыг давах эсвэл баталгаажуулахын тулд SMS илгээхийг шаардахгүй. Зүгээр л татаж аваад сайхан өнгөрүүлээрэй =)

    Тоолуурыг хэрхэн суулгах вэ

    Програмыг суулгахын тулд ихэнх програмуудад хамаарах энгийн зааврыг дагана уу.

    1. Татаж авсан файл дээр хоёр товшиж ажиллуулна уу. Бүх суулгацын файлуудыг хөгжүүлэгчдийн албан ёсны вэбсайтаас авсан болно.Counter хувилбар 1.1 файлын сүүлийн шинэчлэгдсэн огноо нь 2016 оны 12-р сарын 28-ны 4:38 цагт байсан.
    2. Гарч ирэх цонхонд лицензийн гэрээг хүлээн авна уу. Та мөн лицензийн гэрээг програм хөгжүүлэгчийн албан ёсны вэбсайтаас уншиж болно.
    3. Суулгахыг хүссэн бүрэлдэхүүн хэсгүүдээ сонгоно уу. Нэмэлт програм суулгахад шаардагдах нүдийг арилгана уу.
    4. Компьютер дээрээ програм суулгахыг хүссэн хавтасаа сонгоно уу. Ихэнх тохиолдолд програм нь хавтасыг автоматаар сонгодог, жишээлбэл, Windows дээр энэ нь C:\Program Files\ байна.
    5. Эцэст нь, програмын суулгалтын менежер "Ширээний товчлол" эсвэл "Эхлүүлэх цэсний хавтас" үүсгэхийг санал болгож болно.
    6. Дараа нь суулгах процесс эхэлнэ. Дууссаны дараа суулгацын менежер таныг програмыг илүү зөв ажиллуулахын тулд компьютераа дахин асаахыг хүсэх болно.

    Өнөөдрийн нийтлэлд бид энгийн боловч найдвартай файл байршуулах хяналтын системийг бий болгох болно. Файл бүр мэдээллийн санд тухайн файлын татагдсан нийт тоог хадгалах харгалзах мөртэй байх болно. PHP нь MySQL мэдээллийн баазыг шинэчилж, хэрэглэгчдийг тохирох файлууд руу дахин чиглүүлэх болно.

    Татаж авсан файлуудын тоог хянахын тулд файлуудыг зөв хавтсанд байршуулж, тэдгээрт хандахын тулд тодорхой URL ашиглахад л хангалттай.

    Алхам 1 - XHTML

    Эхлээд бидэнд XHTML тэмдэглэгээ хэрэгтэй. Энэ нь маш энгийн - энэ бол нийтлэг блок юм файлын менежер, файл бүрийн холбоос элемент дотор байрлах сумтай жагсаалтыг агуулсан ли.

    Татаж авсан тоог тоолох файлуудыг хавтас руу байршуулах ёстой файлуудскриптийн үндсэн директорт байрладаг (файлын бүтэц хэрхэн зохион байгуулагдсаныг жишээ архиваас харж болно). PHP нь хавтсанд байгаа бүх файлуудыг давтаж, файл бүрийг тусдаа li элемент болгон, тэмдэглэгдсэн жагсаалтад нэмнэ.

    demo.php

    • photoShoot-1.0.zip 0 татаж авах

    шинж чанар гэдгийг анхаарна уу hrefхолбоос дээр байршуулсан файлын нэрийг файлын параметр болгон дамжуулдаг download.php. Эндээс татан авалтууд тооцогдох бөгөөд та дараа нь харах болно.

    Татаж авах тооллогыг зохион байгуулахын тулд та энэ тусгай интерфэйсийг ашиглах шаардлагагүй. Та зүгээр л холбогдох боломжтой download.phpблог эсвэл вэб хуудасны хуудсан дээр байгаа бөгөөд бүх татан авалтыг зөв тоолох болно.

    Алхам 2 - CSS

    Бидний XHTML тэмдэглэгээ бэлэн болмогц бид скриптийнхээ харагдах байдал, мэдрэмж дээр анхаарлаа төвлөрүүлж чадна. Доорх CSS загварууд нь файлын менежерийн блокийн дүр төрхийг ID-аар нь өгдөг, учир нь бид хуудсан дээр зөвхөн нэг л зүйл байгаа. Үлдсэн элементүүдийг ангийн нэрээр дамжуулан загварчилдаг.

    style.css

    #файл менежер(арын дэвсгэр өнгө:#EEE; хүрээ:1px хатуу #DDD; зах:50px авто; дүүргэлт:10px; өргөн:400px; ) ul.manager li( background:url("img/bg_gradient.gif") давталт-x төв доод #F5F5F5; хүрээ:1px хатуу #DDD; хүрээ-дээд-өнгө:#FFF; жагсаалтын хэв маяг:байхгүй; байрлал:харьцангуй; ) ul.manager li a( дэлгэц:блок; padding:8px; ) ul.manager li a:hover .download-label( /* Жагсаалт дээр хулганаа аваачихад дотор нь татаж авах ногоон текстийг харуулна: */ display:block; ) span.download-label( background-color:#64B126; border :1px хатуу #4E9416; өнгө: цагаан; дэлгэц: байхгүй; үсгийн хэмжээ: 10px; дүүргэх: 2px 4px; байрлал: үнэмлэхүй; баруун: 8px; текстийн чимэглэл: байхгүй; текст-сүүдэр: 0 0 1px #315D0D; дээд :6px; /* CSS3 дугуйрсан булан */ -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; ) span.download-count( color:#999; font-size: 10px; дэвсгэр: 3px 5px; байрлал: үнэмлэхүй; текст чимэглэл: байхгүй; )

    Энд "татаж авах" гэсэн тайлбарыг өмчийн хамт анхдагчаар нуусан болохыг анхаарна уу дэлгэц: байхгүй. Энэ нь дамжуулан харуулж байна дэлгэц: блок, линк дээр хулганыг зөвхөн хулганаар гүйлгэхэд JavaScript байхгүй. Тайлбарын булангуудыг дугуйлахад бага зэрэг CSS3 ашигладаг.

    Алхам 3 - PHP

    Дээр дурьдсанчлан PHP нь бүх хавтсыг дамждаг файлууд, мөн файл бүрийг тэмдэглэгдсэн жагсаалтын li элемент болгон гаргадаг. Энэ нь хэрхэн тохиолддогийг нарийвчлан авч үзье.

    demo.php - Топ

    // Алдаа мэдээлэх: алдааны_мэдээлэл(E_ALL^E_NOTICE); // DB холболтын файлыг оруулаад: "connect.php" шаардах; $extension=""; $файлуудын_массив = массив(); /* Өнгөц зургийн лавлахыг нээж, бүх хуруугаараа давталт хийх: */ $dir_handle = @opendir($директор) or die("Таны файлын лавлахад алдаа гарлаа!"); while ($file = readdir($dir_handle)) ( /* Системийн файлуудыг алгасах нь: */ if($file(0)==".") үргэлжлүүлэх; /* end() нь үүсгэсэн массивын сүүлчийн элементийг буцаана. explode() функц: */ $extension = strtolower(end(explode(".",$file))); /* php файлуудыг алгасаж байна: */ if($extension == "php") үргэлжлүүлэх; $files_array =$файл; ) /* Файлуудыг цагаан толгойн дарааллаар эрэмбэлэх */ sort($files_array,SORT_STRING); $file_downloads=array(); $үр дүн = mysql_query("Татаж авах_менежерээс сонгох *"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* $file_downloads массивын түлхүүр нь файлын нэр байх ба татан авалтын тоог агуулна: */ $file_downloads[ $row["файлын нэр"]]=$мөр["татаж авах"]; )

    Бид "download_manager" хүснэгтээс бүх бичлэгийг хэрхэн сонгохыг анхаарна уу mysql_query()дараа нь тэдгээрийг массив руу нэмнэ $file_downloads, массив түлхүүрийн файлын нэр, татагдсан утгын хамт. Тиймээс, кодонд бид бичиж болно $file_downloads['archive.zip'], мөн энэ файлын татан авалтын тоог харуулна.

    Сумтай жагсаалтын li элементүүдийг үүсгэхэд ашигладаг кодыг доор харуулав.

    demo.php - Төв хэсэг

    Foreach($файлуудын_массив нь $түлхүүр=>$val) ( echo "

  • ".$val." ".(int)$file_downloads[$val]." татаж авах
  • "; }

    Бүх зүйл маш энгийн - бид мөчлөгөөр дамждаг тус бүрмассиваар $файлуудын_массив, мөн хуудсан дээрх шаардлагатай өгөгдлийг зохих тэмдэглэгээнд харуулна.

    Одоо татаж авах нягтлан бодох бүртгэл хэрхэн ажилладаг талаар нарийвчлан авч үзье.

    download.php

    // Алдаа мэдээлэх: алдааны_мэдээлэл(E_ALL^E_NOTICE); // Холболтын файлыг оруулаад: require("connect.php"); if(!$_GET["файл"]) алдаа("Параметр алга!"); if($_GET["файл"](0)==".") алдаа("Буруу файл!"); if(file_exists($directory."/".$_GET["file"])) ( /* Хэрэв зочин хайлтын систем биш бол татан авалтыг тоол: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filename="".mysql_real_escape_string($_GET["file"])."" ДАВХАРСАН ТҮЛХҮҮРИЙН ШИНЭЧЛЭЛТ ДЭЭР татан авалт=татаж авах+1"); header("Байршил: ".$директор."/".$_GET[" file"]); exit; ) else 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) үнэнийг буцаана; // a bot ) худал буцаана; // Бот биш )

    Энд та зочин таны холбоосыг мөлхөж буй хайлтын системийн робот мөн эсэхийг шалгах хэрэгтэй. Роботууд нь таны сайтыг хайлтын системд оруулахад тусалдаг тул сайн зочдод байдаг ч манай тохиолдолд татаж авах статистикийг гажуудуулж чаддаг. Тийм ч учраас өгөгдлийн сан нь зочин баталгаажуулалтад тэнцсэний дараа л шинэчлэгддэг is_bot().

    Алхам 4 - MySQL

    Өмнөх алхамд дурьдсанчлан татаж авсан тоог MySQL өгөгдлийн сангийн download_manager хүснэгтэд тэмдэгт мөр болгон бичдэг. Эхлээд асуулгын энэ хэсэг хэрхэн ажилладагийг тайлбарлая:

    download.php

    INSERT INTO download_manager SET filename="filename.doc" ДАВХАР ТҮЛХҮҮРИЙН ШИНЭЧЛЭЛТ Татаж авах=татаж авах+1

    Асуулгын эхний хэсэг нь MySQL-д хүснэгтэд шинэ мөр оруулахыг хэлдэг. татаж авах_менежер, мөн талбарын утгыг тохируулна уу файлын нэрачаалагдахыг хүссэн файлын нэртэй тэнцүү байна. Үүнээс гадна талбай файлын нэрөвөрмөц хүснэгтийн индекс гэж тодорхойлсон. Энэ нь тодорхой файлын нэртэй мөрийг зөвхөн нэг удаа оруулах боломжтой, эс тэгвээс түлхүүр талбарын давхардсан алдаа гарна гэсэн үг.

    Энэ тохиолдолд хүсэлтийн хоёр дахь хэсэг хүчин төгөлдөр болно - ДАВХАР ТҮЛХҮҮРИЙН ШИНЭЧЛЭЛТ ДЭЭ, энэ нь талбайн үнэ цэнийг нэмэгдүүлдэг татаж авахфайл аль хэдийн мэдээллийн санд байгаа бол нэгээр.

    Ингэснээр шинэ файлуудыг анх байршуулахдаа автоматаар мэдээллийн санд оруулах болно.

    Алхам 5 - jQuery

    Манай татан авалтын тоолуурыг илүү харагдахуйц болгохын тулд хэрэглэгч татаж эхэлмэгц файлын нэрний хажууд тоолуурыг шинэчлэх боломжийг нэмбэл сайхан байх болно. Одоогийн байдлаар тоолуурын шинэ утгыг харахын тулд хэрэглэгч хуудсыг дахин ачаалах шаардлагатай байна.

    Үүнийг жижиг кодын тусламжтайгаар засч болно:

    script.js

    $(document).ready(function()( /* Энэ код нь DOM-г бүрэн ачаалсны дараа ажиллана */ $("ul.manager a").click(function()( var countSpan = $(".download) -тоолох", энэ); countSpan.text(parseInt(countSpan.text())+1); )); ));

    Бид зүгээр л холбоос дээр дарахад үйл явдал зохицуулагчийг томилсон. Хэрэглэгч холбоос дээр дарах бүрд бид одоогийн татаж авсан утгыг нэгээр нэмэгдүүлдэг.

    Алхам 6 - htaccess

    Ажлаа дууссан гэж хэлэхээс өмнө бидэнд дахиад нэг зүйл байна. Зарим төрлийн файлуудыг анхдагч хөтөч нь шууд нээхийг оролддог гэдгийг та аль хэдийн анзаарсан байх. Үүний оронд бид файлыг татаж эхлэх хэрэгтэй. Энэ нь файл дотор хэд хэдэн мөр нэмэхэд хялбар юм .htaccessхавтсанд байрладаг файлууд:

    ForceType application/octet-stream

    Ингээд л манай татаж авах тоолуур бэлэн боллоо.

    Дүгнэлт

    Энэ жишээг өөрийн сервер дээр ажиллуулахын тулд та MySQL мэдээллийн санд download_manager хүснэгт үүсгэх хэрэгтэй бөгөөд үүнд мэдээж хандах боломжтой. Жишээ бүхий архивт файл байна table.sql, энэ нь хүссэн хүснэгтийг үүсгэх шаардлагатай SQL кодыг агуулдаг.

    Үүний дараа зөвхөн өгөгдлийн сангийн холболтын мэдээллийг файлд зааж өгнө үү configuration.php.