Bir indirme sayacı yükleme - WordPress eklentilerinin gözden geçirilmesi. PHP ve MySQL kullanarak dosya indirme sayacı oluşturma Metin ve grafik dosyalarını kaydetme

Birçok sitede dosyaları indirmek için bağlantılar görebilirsiniz. Örneğin, imalat şirketleri belirli bir ürüne ilişkin talimatları resmi sayfalarında yayınlar. Ayrıca geliştiriciler yazılım Ayrıca programlarını ücretsiz olarak indirmeyi de teklif ediyorlar, böylece kullanıcının programın işlevlerine ve işleyişine aşina olmasını sağlıyorlar.

Bir dosyayı ücretsiz olarak indirilebilir hale getirirken, kaç kez indirildiğini bilmek önemlidir. Bu, her şeyden önce, analizi bilginin son kullanıcı için yararlılığının belirlenmesine yardımcı olacak istatistikler için gereklidir.

WordPress sitesinde indirme sayacı nasıl ayarlanır?

Bu istatistikleri WordPress araçları arasında görmenin bir yolu yoktur. Bu nedenle üçüncü taraf bir çözüm olan Kama Tıklama Sayacı eklentisini kullanacağız.

Kama Tıklama Sayacı eklentisi

Ücretsiz Kama Tıklama Sayacı eklentisi, belirli bir dosyanın indirilme sayısını doğru bir şekilde saymak için gerekli tüm araçları sağlar. Bu nedenle öncelikle kurulması ve etkinleştirilmesi gerekiyor. Örneğin, gönderi sayfasında indirme sayısını sayacağımız bir pdf dosyasının bağlantısını görüntüleyeceğiz. Dosyaların siteye yüklendiğine dikkat edilmelidir. standart yöntemler kullanarak WordPress Medya Kitaplıkları (Medya -> Yeni Ekle). Daha sonra, düzenleme için gönderiyi veya sayfayı açmanız gerekir. İçerik kısmında imleci dosya bağlantısının yerleştirileceği yere getirmeniz ve görsel düzenleyici araç çubuğunda görünen butona tıklamanız gerekiyor.

Açılan pencerede eklenti sizden daha önce indirdiğiniz dosyayı seçmenizi isteyecektir. Bunu yapmak için büyüteç simgesinin bulunduğu düğmeye basın.

Medya dosyası kitaplığında istediğiniz dosyayı seçin ve Dosya seç düğmesini tıklayın.

Sonuç olarak, gönderinin veya sayfanın içerik kısmına, dosyayı indirmek için bir bağlantı görüntülemeye yarayan özel bir kısa kod eklenecektir.

Materyali güncelledikten sonra (Güncelle düğmesi), görüntülemek için siteye gidebilirsiniz.

Eklenti ayrıca sitenin kullanıcı kısmındaki indirme istatistiklerini bir widget'ta gösterebilir. Varsayılan olarak eklentinin, widget'ta neyin indirildiğine ve kaç kez indirildiğine ilişkin belirli sayıları göstermediğini unutmayın. Yalnızca en sık indirilen dosyaların listesi görüntülenir. Bunu yapmak için yönetici bölümüne Görünüm -> Widget'lar gidin ve KSS:En Çok İndirilenler widget'ını kenar çubuğunda istediğiniz konuma sürükleyin.

Widget'ın, listeyi değiştirmenize olanak tanıyan çeşitli seçeneklerin bulunduğunu görebilirsiniz.

Burada aşağıdaki temel parametreleri ayarlayabilirsiniz:

  • widget başlığı (Başlık alanı);
  • listedeki çıktı dosyalarının sayısı (kaç bağlantı gösterilecek?);
  • sonuçların sıralanması (sonuç nasıl sıralanır?);
  • ayar dış görünüşşablon (Şablon ve CSS şablon blokları).

Eklentinin özel bir özelliği esnek şablon özelleştirmesidir. Burada, bunun yerine şu veya bu bilginin görüntüleneceği sözde etiketleri kullanabilirsiniz.

Widget'ın tüm ayarları tamamlanıp kaydedildikten sonra (Kaydet düğmesi), sonucu web sitesinde görüntüleyebilirsiniz.

Uzun zamandır PHP ve MySQL ile ilgili ders verilmedi. Bugün basit ama etkili bir indirme sayacı oluşturacağız.

Her dosyanın veritabanı tablosu satırında bir girişi olacaktır. İndirilen dosya sayısı aynı tabloda saklanacaktır. PHP MySQL veritabanını güncelleyecek ve kullanıcıyı şu adrese yönlendirecektir: gerekli dosya.

Herhangi bir dosyanın indirilme sayısını takip etmek için, onu dosyalar klasörüne koymanız ve ona erişmek için özel bir URL kullanmanız gerekir.

Adım 1 - XHTML

İlk adım, betiğimiz için işaretlemeyi oluşturmaktır. Çok basit; listedeki her öğenin bir dosyadan sorumlu olduğu, sırasız bir liste içeren bir div dosya yöneticimiz var.

İndirilmesinin izlenmesi gereken dosyalar, betiğin kök klasöründeki dosyalar klasörüne yerleştirilir. PHP daha sonra tüm dosyaları inceler ve her birini sırasız listeye bir liste öğesi (li) olarak ekler.

demo.php


  • photoShoot-1.0.zip 0 indir

Bağlantıların href niteliğinin, dosya adını parametre olarak download.php'ye ilettiğini unutmayın. İndirme sayısının takibinin yapıldığı yer burasıdır.

Her şeyi aynı şekilde görüntülemenize gerek yok; sayfalarınızdaki download.php dosyasına bağlantı vermeniz yeterlidir; tüm indirme işlemleri gerçekleşmez.

Adım 2 – CSS

İşaretledikten sonra tasarıma başlayalım. Aşağıdaki CSS kuralları, sayfada yalnızca 1 kez göründüğü için kimlik (# sembolü) kullanan dosya yöneticisi div'e ve sınıf adlarına göre diğer öğelere atıfta bulunur.

stiller.css

#dosya yöneticisi( arka plan rengi:#EEE; kenarlık:1px katı #DDD; kenar boşluğu:50px otomatik; dolgu:10px; genişlik:400px; )
ul.manager li( arka plan:url("img/bg_gradient.gif") tekrarlama-x orta alt #F5F5F5; border:1px katı #DDD; border-top-color:#FFF; list-style:none; konum:relative ; ) ul.manager li a( display:block; padding:8px; ) ul.manager li a:hover .download-label( /* Simgenin üzerine geldiğinizde yeşil indirme metnini göster: */ display:block; ) span . download-label( arka plan rengi:#64B126; kenarlık:1px katı #4E9416; renk:beyaz; ekran:yok; yazı tipi boyutu:10px; dolgu:2px 4px; konum:mutlak; sağ:8px; metin dekorasyonu: yok ; text-shadow:0 0 1px #315D0D; top:6px; /* CSS3 Yuvarlatılmış Köşeler */
-moz-sınır-yarıçapı:3px; -webkit-sınır-yarıçapı:3px; kenarlık yarıçapı:3px; ) span.download-count( color:#999; font-size:10px; padding:3px 5px; konum:mutlak; metin-dekorasyon:yok; )

Adım 3 – PHP

Daha önce de söylediğim gibi PHP, files klasöründeki dosyaları arar ve her dosyayı sırasız bir listede bir liste öğesi olarak çıkarır. Bunun nasıl gerçekleştiğine bir göz atalım

demo.php - Üst kısmı

// Hata raporlama: error_reporting(E_ALL^E_NOTICE); // : "connect.php" gerektirir; $uzantı = ""; $files_array = dizi(); /* Klasörü açın ve tüm dosyalara göz atın: */ $dir_handle = @opendir($directory) or die("Dosya dizininizde bir hata var!"); while ($dosya = readdir($dir_handle)) ( /* Atla sistem dosyaları: */ if($file(0)==".") devam et; /* end(), patlayıcı() işlevi tarafından oluşturulan dizinin son elemanını görüntüler: */ $extension = strtolower(end(explode(".",$file))); /* Php dosyalarını atla: */ if($extension == "php") devam et; $files_array=$dosya; ) /* Dosyaları alfabetik sıraya göre sıralayın */ sort($files_array,SORT_STRING); $file_downloads=dizi(); $result = mysql_query("download_manager'dan SEÇ *"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* $file_downloads dizi anahtarı dosyanın adı olacak ve indirme sayısını içerecektir: */ $file_downloads[$row ["dosyaadı"] ]=$satır["indirilenler"]; )

mysql_query() kullanarak download_manager tablosundaki tüm satırları nasıl seçtiğimize ve daha sonra bunları indirme sayısının anahtarı olarak dosya adını kullanarak $file_downloads dizisine nasıl eklediğimize dikkat edin. Böylece kodun ilerleyen kısımlarında $file_downloads["archive.zip"] yazabilir ve indirme sayısını görüntüleyebiliriz.

Aşağıda liste öğelerini oluşturan kodu görebilirsiniz:

demo.php - orta kısım

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

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

    Her şey basitçe $files_array dizisindeki foreach döngüsü kullanılarak yapılır. Bundan sonra her şey echo kullanılarak çıktılanır.

    Şimdi dosya izlemenin nasıl çalıştığına daha yakından bakalım.

    download.php

    // Hata kontrolü : error_reporting(E_ALL^E_NOTICE); // Bağlantı dosyasını DB'ye ekleyin: require("connect.php"); if(!$_GET["dosya"]) error("Parametre eksik!"); if($_GET["dosya"](0)==".") error("Yanlış dosya!"); if(file_exists($directory."/".$_GET["file"])) ( /* Ziyaretçi bir arama botu değilse indirmeyi sayarız: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET dosya adı ="".mysql_real_escape_string($_GET["file"])."" DUPLICATE KEY UPDATE downloads=downloads+1"); başlık("Konum: ".$directory."/".$_GET[ "dosya"] ); çıkış; ) else error("Bu dosya mevcut değil!"); /* yardımcı fonksiyonlar: */ function error($str) ( die($str); ) function is_bot() ( /* Bu fonksiyon bir robotu kontrol eder */ $botlist = array("Teoma", " alexa ", "froogle", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory", "Jeeves'e Sor", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot " , "crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp", "msnbot", "appie", "HIZLI", "WebBug", "Spade", "ZyBorg", " rabaz", "Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot", "Mediapartners-Google", "Sogou web örümceği", "WebAlta Crawler", "TweetmemeBot", "Butterfly", "Twitturls" , "Me.dium", "Twiceler"); foreach($botlist as $bot) ( if(strpos($_SERVER["HTTP_USER_AGENT"],$bot)!==false) return true; // Bir bottur ) false döndür; // Bot değil)

    Ziyaretçinizin insan mı yoksa arama motoru robotu mu olduğunu kontrol etmeniz önemlidir. Robotlar kesinlikle iyidir ama istatistiklerimizi çarpıtmalarına izin vermeyelim. Bu nedenle veritabanındaki satır ancak is_bot() kontrolünden sonra güncellenir.

    Adım 4 – MySQL

    Önceki adımda fark ettiğimiz gibi indirme sayısı download_manager tablosunda bir satır olarak saklanıyor. Öncelikle bu isteğin nasıl çalıştığını açıklayalım:

    download.php

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

    MySQL'e download_manager tablosuna yeni bir satır eklemesini ve satırın dosya adı alanını indirme için çağrılan dosyanın değerine ayarlamasını söyler. Ancak dosya adı alanı tabloda benzersiz bir dizin olarak belirlenmiştir. Bu, her satırın yalnızca bir kez eklenebileceği anlamına gelir, aksi takdirde yinelenen anahtar hatası meydana gelir.

    Sorgunun ikinci bölümünün çalışacağı yer burasıdır - ON DUPLICATE KEY UPDATE, dosya veritabanında zaten mevcutsa MySQL'e indirilenler sütununa bir tane eklemesini söyleyecektir.

    Bu sayede yeni dosyalar ilk indirildiğinde veritabanına otomatik olarak eklenecektir.

    Adım 5 – jQuery

    Gerçek zamanlı takip yapabilmek için her indirme sonrasında dosya adının yanındaki sayacı güncellemeniz iyi olacaktır.

    Bunu jQuery kullanarak yapacağız:

    script.js

    $(document).ready(function())( /* Sayfa yüklendikten sonra kod çalıştırılır */ $("ul.manager a").click(function())( var countSpan = $(".download -count",this) ; countSpan.text(parseInt(countSpan.text())+1); )); ));

    Basitçe dosyalara yönlendiren bağlantılara bir tıklama işleyicisi atarız ve her tıklamaya bir değer ekleriz.

    Adım 6 – htaccess

    Yapılması gereken bir şey daha var. Download.php kullanıcıyı parametre olarak iletilen istenen dosyaya yönlendirir. Ancak tarayıcıların bazı dosya türlerini doğrudan açmaya çalıştığını fark etmiş olabilirsiniz. Yüklemelerini başlatmamız gerekiyor. Bu, files klasöründe bulunan .htacess dosyasının içindeki birkaç satırla yapılabilir.

    ForceType uygulaması/sekizli akış

    Artık tezgahımız tamamen hazır!

    Çözüm

    Demonun çalışması için MySQL veritabanında download_manager tablosunu yeniden oluşturmanız gerekir. Gerekli SQL kodunu kaynaklarda bulabilirsiniz.

    Bundan sonra, veritabanına bağlanmak için verilerinizi yapılandırma.php dosyasına ekleyin.

    // Sihirli tırnak modu dönüşümünü kaldırın $_POST["content"] = addslashes($_POST["content"]);

    // Dosyanın içeriğini yeniden yazın file_put_contents($_POST["dosyaadı"], "$_POST");

    4.9. Dosya indirme sayacı

    Tüm dosya indirme sayaçlarının işleyişi, ziyaretçiye bir indirme bağlantısı olarak dosyanın kendisine değil, indirmeyi dikkate alan ve dosyayı kullanıcının tarayıcısına gönderen bir komut dosyasına bir bağlantı verilmesi gerçeğine dayanır.

    Sayacımızı, dosya indirme bağlantıları geçerli sayfaya bağlantılar olacak ve dosya adını parametre olarak iletecek şekilde oluşturacağız; örneğin, index.php?down=archive.zip . Betik, down parametresinin iletilip iletilmediğini kontrol edecek ve eğer öyleyse arşiv indirme işlemini filecount.txt dosyasına kaydedecektir. Sayfa yeniden yüklendiğinde, her arşivin sayaç değerleri, tarayıcı penceresine gönderilmek üzere dosyadan çıkarılır. Dosya, indirilen arşivin yolunu belirten HTTP Konum başlığını ziyaretçiye göndererek indirilmek üzere aktarılacaktır. Dosya indirme sayacı komut dosyası Liste 4.31'de gösterilene benzeyebilir.

    Listeleme 4.31. Dosya indirme sayacı

    // Hata işleme düzeyini ayarlayın error_reporting(E_ALL & ~E_NOTICE);

    // Dosya adlarını bir diziye kaydediyoruz

    $dosya_adı = dizi("arşiv1.zip","arşiv2.zip","arşiv3.zip");

    // İstatistiklerin saklandığı dosyanın adı $countname = "filecount.txt";

    //Eğer dosya mevcutsa,

    // mevcut istatistikleri bir diziye oku if(file_exists($countname))

    //Sayacın içeriğini al

    $content = file_get_contents($countname);

    // Dizinin paketini aç

    $count = serileştirmeyi kaldır($içerik);

    // Böyle bir dosya yoksa oluşturun,

    // ve istatistikleri sıfırla

    // $count dizisini sıfır değerlerle doldurun foreach($file_name as $file)

    $sayısı[$dosya] = 0;

    // Diziyi paketleyin ve sayaca yerleştirin file_put_contents($countname, seriize($count));

    // down parametresinin değerinin geçip geçmediğini kontrol edin

    // GET yöntemiyle

    if(isset($_GET["aşağı"]))

    // $_GET["down"] parametresinin değerinin dahil olup olmadığını kontrol edin

    // $dosya_adı dizisine

    if(in_array($_GET["aşağı"],$dosya_adı))

    // Bu dosyanın indirildiği gerçeğini kaydedin

    //Sayacın değerini tuşuyla artırıyoruz

    // $_GET["aşağı"] birer birer

    $count[$_GET["aşağı"]]++;

    // Sayaç dosyasının üzerine yaz file_put_contents($countname, seriize($count));

    echo "$file dosyası yüklendi ".intval($count[$file])." times
    ";

    İndirilen dosyaların adları $file_name dizisinde saklanır; yeni bir arşiv eklenmesi, arşivin sisteme otomatik olarak kaydedilmesiyle sonuçlanır. Diziye ön kayıt çeşitli nedenlerden dolayı gereklidir. Öncelikle down parametresi ile dizi adı kabul ederken yüklenmesine izin verilen dosyalar arasında olup olmadığını kontrol etmeniz gerekir. İkinci olarak, bir dizideki dosya adlarını işlemek çok daha uygundur. Böylece, indirilen dosya sayısını saklayan $count dizisi, sistemde kayıtlı dosya dizisine göre otomatik olarak oluşturulur,

    Serialize() işlevini kullanarak bir diziyi bir dizeye paketlemek ve ardından unserialize() işlevini kullanarak onu tekrar bir diziye açmak kullanışlıdır.

    NOT

    Ana içerik gönderilmeden önce tüm HTTP başlıklarının gönderilmesi gerektiğini unutmamak önemlidir, aksi takdirde gönderilmezler ve PHP yorumlayıcısı bir uyarı verir "Uyarı: Başlık bilgileri değiştirilemiyor - başlıklar zaten gönderildi"

    (Uyarı: Başlık bilgisini değiştirmek mümkün değildir; başlıklar zaten gönderilmiştir). Bu, HTTP protokolü tarafından belirlenir: önce başlıklar, ardından belgenin içeriği gönderilir, böylece tarayıcı penceresine yapılan herhangi bir çıktı, başlıkların gönderilmesinin sonu ve belgenin gövdesinin gönderilmesinin başlangıcı olarak algılanır. Başlıklar gönderilmeden önce tarayıcı penceresine çıktı verilmesi kaçınılmazsa, tüm çıktıyı bir ara belleğe yerleştirerek ve betiğin sonuna göndererek çıktı kontrol işlevlerine başvurmanız gerekir.

    Liste 4.31'de görebileceğiniz gibi, komut dosyası, filecount.txt dosyasının eksik olduğu ilk çalıştırma durumunu ele alır - ilk sayfa yüklemesinde otomatik olarak oluşturulur ve $file_name dizisindeki her dosya için sıfır değerle tetiklenir. Liste 4.31'deki betiğin sonucu Şekil 2'de görülebilir. 4.4.

    Pirinç. 4.4. Dosya sayacının sonucu

    4.10. Metin ve grafik dosyalarını kaydetme

    Metin veya HTML dosyalarına giden bir bağlantıyı takip etmek, bunların tarayıcı penceresinde görüntülenmesine neden olur; bu, özellikle dosyanın indirilmesi amaçlanıyorsa her zaman uygun değildir. Aynı kader bizi bekliyor grafik dosyaları ve genel olarak tarayıcının görüntüleyebileceği tüm dosyalar. Ziyaretçinin tarayıcısı, dosyanın içeriğini sunucudan "öğrenir", çünkü her dosyaya istemciye içerik, indirilen dosyanın boyutu, çerez ayarlama ihtiyacı vb. hakkında bilgi veren HTTP başlıkları eşlik eder. dosya türü belirlenemedi, yalnızca ikili akış olarak gönderiliyor.

    Liste 4.32'de gösterilen HTTP başlıklarını göndererek bu davranışı bastırabilirsiniz.

    Listeleme 4.32. Metin ve grafik dosyalarını kaydetmenizi sağlayan bir komut dosyası

    $dosyaadı = temeladı($_GET["aşağı"]); başlık("İçerik-Dispozisyon: ek; dosyaadı=$dosyaadı"); başlık ("İçerik türü: uygulama/sekizli akış"); başlık("İçerik uzunluğu: ".filesize($_GET["aşağı"]));

    echo file_get_contents($_GET["aşağı"]); ?>

    Liste 4.32'deki komut dosyası, GET parametresi olarak bir dosya adını alır; örneğin,

    index.php?down=filetext.txt. basename() işlevi adı alır

    dosya (GET parametresinin dosyanın yolunu içermesi durumunda). Content-Disposition HTTP üstbilgisi, kaydedilecek dosyanın dosya adı özelliği tarafından belirlenen adını belirtir. Yukarıdaki komut dosyasında, dosya adı parametresi gönderilen dosyanın adıyla aynıdır, ancak dosya adı parametresi olarak isteğe bağlı bir ad iletilebilir. İçerik türü HTTP üstbilgisi, aktarılan verilerin ikili olduğunu ve tarayıcı tarafından yorumlanmaması gerektiğini belirtir. İçerik uzunluğu HTTP başlığı, dosyanın boyutunu istemciye iletir. Son satır $_GET["down"] parametresi aracılığıyla iletilen ve file_get_contents() işlevi kullanılarak alınan dosya içeriğini görüntüler. Liste 4.32'deki komut dosyasının sonucu Şekil 1'de gösterilmektedir. 4.5.

    NOT

    Dosya içeriğinin çıktısı alındıktan sonra akışa başka hiçbir şeyin çıktısı verilmemesi önemlidir: ne echo yapısıyla ne de doğrudan çıktıyla - aksi halde her şey dosyanın sonuna eklenecektir. Bu, ?> etiketinin bitişinden sonraki olası boşluklar ve yeni satırlar için geçerlidir.

    Pirinç. 4.5. Bir dosyayı indirmek için iletişim kutusu

    Son zamanlarda basit yazar projemi oluştururken ilgimi çeken bir sonraki soru, burada yayınlanan belirli bir dosyanın indirilme sayısının nasıl sayılacağı sorusuydu. Bunun başka bir eklenti, bir tür indirme yöneticisi veya daha basit olanı indirme sayacı gerektirdiğini varsaymak en mantıklısıydı. İnterneti araştırdıktan sonra, her zamanki gibi bu eklentilerden oluşan bir vagon ve küçük bir araba olduğu ortaya çıktı. Ancak yine de onlarla ilgili hiçbir inceleme yok. Neyi seçeceğim kesinlikle belli değil ve her zamanki gibi her şeyi kendim test etmek zorunda kaldım. Ve test sonuçlarına dayanarak bu incelemeci oluşturuldu. Yazılması uzun zaman aldı ve amaç, verilen tüm eklentileri, ayarlarının tam incelemesiyle kapsamlı bir şekilde test etmek değildi, bu nedenle her birinin ayrıntılı ekran görüntülerini bulamayacaksınız, ancak önemli ayarlar olacak. Bazıları hakkında hiç konuşmak istemedim - çok aptallardı, ama onlara baktığımda hiçbir şey yazmamak utanç vericiydi.

    Giriiş.

    Dolayısıyla görev, WordPress için bir indirme sayacı ayarlayarak belirli bir dosyanın indirilme sayısını saymaktı. Daha yakından incelendiğinde, birkaç alt göreve ya da daha doğrusu, onu yerine getirecek bir eklentiye yönelik dileklere düştüğü görüldü. İşte bunların kısa bir listesi:

    • İndirme sayısının yönetici panelinde bir yerde, günde, haftada, ayda, yılda, toplamda kaç tane indirildiğini sıralama özelliğiyle birlikte görüntülenmesi gerekir.
    • Dosya indirme işlemlerinin grafiklerini/diyagramlarını birbirine göre görebilmek arzu edilir.
    • Zaman içindeki dosya indirme grafiklerini/diyagramlarını görebilmek arzu edilir.
    • Dosyanın en son ne zaman indirildiğine ilişkin istatistiklerin tutulması tavsiye edilir
    • Bağlantının yanında, dosyanın kaç kez indirildiğine, boyutuna ve indirmek üzere olan kullanıcı için indirme tarihine ilişkin bilgilerin görüntülenmesi yeteneği. Peki ya da geri çekilmemek - yöneticinin isteği üzerine
    • Yazı yazma panelindeki ayrı bir düğmeyi kullanarak bundan sorumlu kodu ekleme yeteneği TinyMCE editörü(Hızlı etiketler kullanmayı sevmiyorum)
    • İndirme hızını sınırlama yeteneği (her ihtimale karşı)
    • Bu eklentiye bir yükleme işlevi eklemek (dosyaları sunucuya yüklemek) - tam tersine pes etmedim. FTP benim için de iyi çalışıyor. Ama çok müdahale etmiyorsa bırak kalsın
    • İndirme bağlantısına güzel bir düğme ekleyebilmek güzel olurdu - gerçi benim için class = "button" yazmak yeterli

    ABAP

    Dosyayı indir!

    • Yalnızca web sitesinden değil, yalnızca bağlantıdan yapılan indirme sayısını sayması iyi olurdu
    • Yasaklama imkanı direkt indirme Dosyanın sunucuda nerede olduğunu göstermeden.

    İşte küçük bir liste.

    Gözden geçirmek

    Teknik spesifikasyonlara karar verdikten sonra doğrudan bize sunulanları değerlendirmeye başlayacağız.

    1. Buradan indirilen Counter 1.2 eklentisini indirin.

    Başlangıçta eklenti sayfası bulunuyordu, ancak yazar bunu 4 yıldan fazla bir süredir desteklemiyor. Bunun için eklentiler dizininde benim için başka bir klasör oluşturuyoruz - download-counter ve her iki dosyayı da oraya bırakıyoruz. Sonuç olarak - nerede düşünürdünüz? — bunun için ayarlar kayıtlarda görünür. Çok orijinal ama tamam.

    Hadi içeri girelim ve download-manager.php dosyasının yolunu yazalım (doğrudan köke saçma sapan şeyler atmayı gerçekten sevmiyorum). Ve bakalım ne elde ettik. Dosyayı yükleyin, indirilip indirilmediğini kontrol edin manuel mod, tarayıcıya doğrudan bir bağlantı girerseniz, sayaç oluşturmak için eklentideki yolu girin. Teorik olarak, daha sonra her yere eklenmesi gereken bir kimlik oluşturulmalıdır. Ancak hiçbir şey işe yaramadı - "Hata - Kayıt kaydedilemiyor" hatası veriyor. Tamam, ikna ettik, onu download-manager.php kök dizinine aktardık - yine hiçbir şey, aynı hata. Canın cehenneme Japon balığı, yazarın vazgeçmediği eklentileri hala anlamam benim için yeterli değildi. Üstelik işlevsellik neredeyse sıfırdır.

    2. Counter Advanced 1.1 eklentisini indirin, indirildi.

    Benim için de pek işe yaramadığını hemen söyleyeceğim, bu yüzden kurulumu ve konfigürasyonu hakkında sadece akademik ilginiz nedeniyle okuyabilirsiniz. Aslında bu aynı eklentidir, sadece biraz değiştirilmiş. Tanrıya şükür, talimatlar tercüme edilmemiş olsa da, bunları normal bir şekilde okuyabilir ve çevirmenin ne demek istediğini anlamaya çalışmazsınız. Bu arada, yönetici panelinde güncellemeyi teklif eden tamamen farklı bir eklenti gibi görünüyor (evet, ne halt). Önceki eklentiye benzer şekilde sayfası bulunuyordu ve benzer şekilde yazar onu 4 yıldan fazla bir süredir desteklemiyor. Benzer şekilde, eklentiler dizininde bunun için başka bir klasör oluşturuyoruz, benimki indirme sayacı ve tüm dosyaları oraya atıyoruz. İndirme hızı tüm dosyalar için aynı anda sınırlı olmasına ve her biri için ayarlanmamasına rağmen ayarlar elbette daha zengin görünüyor. download-manager..php dosyası nerede (sondaki dosyanın adını unutmayın, ancak ilk kez tüm indirilenlerin nerede olduğunu doğru tahmin ettim ve bu beni korkunç bir şaşkınlığa sürükledi. Daha sonra ortaya çıktığı gibi, Yüklemelerin indirildiği dizinin adını tahmin ettim, burada mantığım eklentinin yazarıyla %100 aynı şekilde çalıştı.

    Dosyaların yolunu seçmeyi kolaylaştırmak için sunucuda bulunan klasörlerin adlarını indirilenler dizinine (“kategoriler ve dizinler” ayarlarında) ekliyoruz. Bunları eklemezseniz, her şeyi indirilenler köküne indirmeniz gerekir. Kaydet, indirilenleri ekleyebilirsiniz. Yaklaşık olarak elde ettiğimiz sonuç bu.

    Şimdi onu yazıya eklemeye çalışalım. Bir bağlantı ekliyoruz, içinde doğrudan eklenti ayarlarında verilen koda olan bağlantımızı değiştiriyoruz. Ve sonra... Siktir git! HTTP hatası 500 (Dahili Sunucu Hatası): Sunucu isteği tamamlamaya çalışırken beklenmeyen bir durum oluştu. Ben de tam size bir gönderiye doğrudan nasıl sayaç ekleyeceğinizi anlatacaktım, peki ya içindeki bağlantıya? çalışmasını sağlamak için

    ABAP

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

    o zaman bir indirme düğmesi görüntüleyebilirsiniz - bu gerçekten çarpıktır. Eklenti için bu kadar çok zamanınızı boşa harcayın. Gerçekte istatistik tutmuyor çünkü aksaklığın nerede olduğunu bulamıyoruz.

    Bu tam olarak yukarıda belirtilen İndirme Sayacı Gelişmiş'in güncellenmesinin önerildiği eklentidir. Peki, öneriyor - ve tamam, hadi indirip görelim. Eklenti ayrıca 3 yıldan fazla bir süredir güncellenmedi ve hatta bazı kullanıcılar kodunda kendileri düzeltmeler bile yaptı. Oldukça başarılı bir şekilde kuruldu, ortamların çileciliği iyimserliğe ilham vermiyor. Bu arada, aferin, ayarları nereye yerleştireceklerini tahmin ettiler - önceki durumdan daha kötü değil. Ayarlar sayfasına sayaçlar ekliyoruz, her şey olması gerektiği gibi görünüyor.

    Bakalım yazıya neler eklemişiz. Evet, hiçbir düğme yok. Ah, elbette, her şeyin sezgisel olduğunu tam orada unuttum. Talimatlara bakalım. , Download gibi kısa kodlardan oluşan karmaşık bir yapı oluşturmak gerekiyor ve aynı zamanda (muhtemelen CNC nedeniyle) pek bir şey saymıyor.

    Bu nedenle, bilgileri grafik biçiminde görüntüleyen, eşlik eden eklenti İndirme Sayacı Tablosu ile birlikte bunu daha fazla ele almayacağız.

    Yurttaşımız tarafından yazılmıştır, ancak ne yazık ki yapabildiği tek şey, dosyayı adının yanında indiren kişi sayısını göstermektir - sağlanan herhangi bir istatistik veya başka bir özellik yoktur. Ancak minimalizm aşığıysanız ihtiyacınız olan şey budur. Unutmayın, hiçbir düğme yok, şöyle bir kısa kod var


    WordPress için DIY indirme sayacı

    manuel olarak girmeniz gerekecektir. Yazarın her şeyi ayrıntılı olarak anlatması çok iyi, bu yüzden bunu kendi üzerimde test etmem gerekmedi.

    Peki, eğer insanlarımızın yazdığı eklentilerden bahsediyorsak o zaman bir taneden daha bahsetmeden geçemeyeceğiz. Büyük avantajı, yalnızca dosya indirme sayısını değil, aynı zamanda yalnızca bağlantı tıklamalarını da saymanıza olanak sağlamasıdır; bunların bir dosyaya mı yoksa yalnızca başka bir sayfaya mı yönlendirdiği önemli değildir. Veya başka birinin sayfasındaki bir dosyaya :) Bunu da sayacaktır, daha doğrusu teorik olarak sayması gerekir. İstatistikler söz konusu olduğunda o kadar da iyi değil, düzenleme panelinde hiçbir düğme yok ve indirmelerde de herhangi bir kısıtlama yok. Ama yine de görmek ilginç. Bu nedenle indirip kuruyoruz. Prensip olarak yazarın web sitesinde oldukça ayrıntılı bir açıklama var, bu yüzden fazla ayrıntıya girmeyeceğim. Bir dosyaya veya bağlantıya bir sayaç ayarlamanız gerekiyorsa, bir tür kısa kodu kullanmanız veya bağlantıya class = "count" sınıfını eklemeniz gerektiğini her zaman aklınızda tutmalısınız. Bu elbette sinir bozucu; bir düğmeyle çok daha kullanışlı olurdu. Ancak en can sıkıcı şey, tüm çabalara rağmen onu yeterince çalıştıramamamdı - eğer bir kısa kod kullanıldıysa, indirme bağlantısının kendisi görüntülenmiyordu ve bir sınıf kullanıldıysa, bağlantılara ilişkin istatistikler dosyada görünmüyordu. Admin Paneli. Yazarın ekran görüntüleri görüntülenebilir - fikrin kendisini beğendiyseniz deneyin, belki başarılı olursunuz.

    Gerçekten çok basit. Kısa kod vb. gerekmez. Ancak bu eklenti yalnızca yazar için istatistik sağlar; ziyaretçiler için dosya bağlantısının yanında görüntülenmez.

    Ancak kimin hangi dosyayı ne zaman indirdiğine dair detaylı istatistiklerin tutulduğunu da belirtelim. Ancak kullanımı çok uygun değil.

    Ayarlar aşağıdakileri içerir:

    • Dosyaların indirilebileceği dizini belirtebilirsiniz
    • İndirilmesine izin verilen dosya türlerini belirtebilirsiniz
    • Dosya indirme işlemlerinin yazar olarak sayılmasını engelle
    • Aynı IP'den gelen bir bağlantıya tekrarlanan tıklamaların yalnızca bir kez sayılacağı aralığı saniye cinsinden ayarlayın
    • Günde bir IP'den indirilebilecek dosya sayısını sınırlayın
    • İndirme işleminin şimdi başlayacağı bilgisini içeren bir tür ara sayfa kullanın

    Ancak, tüm bunlar yalnızca .htaccess dosyasını düzenleme izniniz varsa (daha basit bir şekilde nasıl söylerdim...) veya bağlantıyı doğrudan dosyaya ekleyerek belirtirseniz işe yarar.

    Ancak kullanıcılar için istatistik görüntüleme özelliği olmadığından ve bağlantı türünü hatırlamak istemediğim için bu noktada bunu düşünmeyi bıraktım ve yalnızca kuyruktaki diğer eklentiler çözemediğinde geri dönmeye karar verdim. görev.

    Bilgi görüntüleme açısından bu eklenti, önceki paragrafta tartışılana çok benzer. İstatistikleri haftalık, aylık, herhangi bir dönem için ve yalnızca ilk 10'u ayrı ayrı görüntülemenize olanak sağlaması bakımından farklılık gösterir. Yetenekleri açısından çok daha sefil, son indirmeye veya belirli bir dosyaya ilişkin istatistik yok, dosyaların indirilmesine kısıtlama getirme yeteneğinden bahsetmiyorum bile. Hiçbir şekilde net bir belge yok. Bunun bir tür yanlış anlaşılma olduğu ve bir eklenti olmadığı izlenimini edindim. Ekran görüntülerini vermek bile istemiyorum ama objektif olmak gerekirse yine de yazarın ekran görüntülerini vereceğim.

    İşte burada aşağı yukarı değerli bir şeydeyiz. Neredeyse yarım milyon indirme - bu bir şeyler söylüyor. Eklentinin resmi sayfası bulunur. Bir gönderiye dosya eklemek için görsel düzenleyicinin üzerindeki oku kullanmanız gerekir (simgenin kendisi içinde görünmez)

    Açılan pencerede gerekli dosyayı seçin (bu, FTP yoluyla önceden yüklenmişse bir örnektir)

    Daha sonra “Yeni indirmeyi kaydet” butonuna tıklayın

    ve bir sonraki ekrana geçerek indirme formatını seçin ve tıklayın. Takın postalamak. Hiçbir şeyin olmaması mümkündür. Eklenti biraz sorunlu en son sürümler WordPress. Bu nedenle, ayrıca İndirilenleri Görüntüle bağlantısını tıklamanız gerekir.

    Daha sonra, ilk önce indirme formatını seçtikten sonra, eklenmesi gereken dosyanın tam karşısındaki Ekle bağlantısına tıklayın.

    Bundan sonra karşılık gelen kısa kod gibi

    ABAP

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

    Eklenti, hassas manuel yapılandırma gerektirir ancak WYSIWYG sağlanmaz. İşin iyi yanı, yalnızca bir kez ayarlamanız gerekmesidir. Ayrıntılı belgeler yazarda mevcuttur.

    İşte bir örnek kurulum:

    ABAP

    (başlık)

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

    Sapmaların desteklenmediğine dikkat edilmelidir; dosya 21 kez indirildiyse ve şablonunuzda "raza" varsa, o zaman kulağa biraz Rusça dışı gelecektir.

    Ve işte düğmeli seçenek:

    ABAP

    - (açıklama), (boyut), Yüklendi (tarih,"Y-a-g"), İndirildi (isabet) kez

    < ahref= "(url)" title="İndirildi (isabetler,"ни разу","1 раз","% раза"}">!} - (açıklama), (boyut), Yüklendi (tarih,"Y-a-g"), İndirildi (isabet) kez

    Öyle görünüyor:

    Bazı değişikliklerden sonra benimki şöyle görünmeye başladı (henüz düğmeler olmadan):

    Hat kodu:

    ABAP

    (filetype_icon) (title) (Dosya boyutu: (boyut), Yüklendi: (tarih,"d.m.Y"), İndirildi (isabet) sayısı)
    (Tanım)

    Olasılıklar listesi oldukça geniştir:

    • Dosyaları onu kullanarak (oka tıklayarak) yükleyebilir veya bulundukları konumu belirtebilirsiniz; eğer daha önce FTP yoluyla yüklenmişlerse, URL'yi belirtmeniz yeterlidir.
    • Dosyanın gerçek konumunu gizler; gerekli herhangi bir URL kombinasyonunu değiştirebilirsiniz
    • Kendiniz de dahil olmak üzere indirme düğmesini kullanabilirsiniz.
    • Yönetici tarafından yapılan indirmeler ve sayaç hariç tutma listesine dahil edilen tüm gereksiz IP'ler dikkate alınmaz.
    • Aynı IP'den belirli bir süre içinde tekrarlanan indirmeleri saymalı mıyım?
    • Resimli, sayaçlı, sayaçsız vb. gibi çeşitli formatlar ayarlayabilir ve bunların her birini uygun durumda kullanabilirsiniz.
    • İndirme günlüğünün csv dosyası olarak yüklenmesi var

    Herhangi bir mp3 veya video dosyası yükleniyorsa, bunun zorla indirilip indirilmediğini belirtmeniz gerekir. Eğer zorlarsanız - o zaman üzerine tıkladığınızda indirilecektir, eğer kutuyu işaretlemezseniz - oynatın, ardından kaydedin - sağ tıklayın. Onun yardımıyla yüklenen dosyaların, dosyalar için özel dizininizin oluşturulduğu yere değil, onun tarafından oluşturulan wp-content/uploads/downloads/ dosyasına yerleştirildiğini belirtmek isterim - bunu ve şunu da hatırlamanız gerekir: bunları istatistiklerden silerken dosyalar sunucudan fiziksel olarak da silinir. FTP yoluyla yüklenenlerde her şey yolunda. Ayrıca, aynı dosyaya farklı gönderilere bağlantı eklerseniz, bunları özetleyip özetlemeyeceğini anlamadım. Ne yazık ki, kayıtlı kullanıcılar dışındaki herkese indirmeyi yasaklayabilmeniz dışında herhangi bir indirme kısıtlamasını desteklemez. Bir dosyanın adını tarayıcının alt satırında görüntülemek istediğinizde veya bunu kimliğine değiştirmeniz gerektiğinde, ayarlar->kalıcı bağlantılar bölümüne gitmeyi ve yapılandırmayı buraya kaydetmeyi unutmayın, böylece her şey . htaccess - bu olmadan dosyalar indirilmez!

    İstatistikler aynı anda üç yerde görüntülenir: konsolda, dosyalar hakkındaki bilgilerde ve indirme günlüklerinde. Bu, örneğin bir dosyanın en son ne zaman indirildiğini görmeniz gerektiğinde bazı rahatsızlıklar yaratır, ancak istatistikleri bir csv dosyası olarak indirebilir ve ardından Excel'de sıralayabilirsiniz. Excel'in gerekli tabloları ve grafikleri oluşturmak için şeytani yeteneklere sahip olduğu göz önüne alındığında, bu belki de kötü değildir. Ancak ekran görüntülerinin daha fazlasını anlatacağını düşünüyorum:

    Günlüğün kendisinin ekran görüntüsü:

    Aynı zamanda, konsolda bunun gibi istatistiklere sahip bir widget'ın görünmesi büyük bir artı:

    Genel olarak küçük bir konfigürasyondan sonra eklentinin işini gayet iyi yaptığını söyleyebiliriz.

    Bu eklenti, örneğin bu sitede kullandığım WP-Anket eklentisiyle aynı yazar tarafından yazılmıştır. Karşılaştırıldığında daha az popülerliğe sahip olmasına rağmen. Ama hak edip etmediğini görelim. Tüm belgeler yazarın web sitesinde bulunabilir. Özünde, eklenti öncekiyle tamamen aynıdır - şablon tamamen aynı şekilde yazılmıştır, kayıtlı veya kayıtlı olmayan kullanıcılar dışında indirme konusunda herhangi bir kısıtlama yoktur ve ayrıca aşağıdaki gibi bir kısa kod kullanmanız gerekir:

    ABAP

    [downloadid='7592']

    Peki, diğer noktalara gelince:

    • Bunu kullanarak dosyaları yükleyebilirsiniz (en fazla iki MB veya php.ini'de ne belirttiyseniz) ve bulundukları konumu belirtebilirsiniz, eğer daha önce FTP yoluyla yüklenmişse, URL'yi belirtmeniz yeterlidir.
    • Dosyanın gerçek konumunu gizler, ancak gerekli herhangi bir URL kombinasyonunu değiştirmek mümkün değildir, yalnızca birkaç sabit seçenek vardır, bunlardan en önemlisi benim için işe yaramadı
    • Ziyaretçilere dosyanın boyutu, kaç kez indirildiği, ne zaman indirildiği hakkında bilgi gösterecek şekilde yapılandırılabilir
    • İlgili dosya türleri için bir simge görüntüleyebilirsiniz
    • Sayacı sıfırlayabilir veya istediğiniz değeri ayarlayabilirsiniz.

    Ancak bazı farklılıklar var. Öncelikle görsel düzenleyicide kısa kod ekleyebileceğiniz bir düğme yok. Daha doğrusu bir buton var ama onu kullanabilmek için öncelikle eklenti ayarlarında dosyaya bir sayaç eklemelisiniz, daha sonra bu buton ile sayacın ID'si doğrudan yazıya eklenecektir. İkincisi, tek bir şablon var ve farklı dosyalar için farklı bilgilerin görüntülenmesi mümkün olmayacak. İstatistiklerin avantajları arasında - dosyanın en son ne zaman indirildiğini gösterir, aksi takdirde yalnızca dezavantajlar vardır - bir csv dosyasına yükleme yok, kimin indirdiğini görüntüleme yok (IP yok), tarihe göre dağıtım yok.

    Ancak simgeler daha güzel (daha sonra bunları önceki eklentiye ekledim). Çalışmasının sonucu şöyle görünüyor:

    Ayrıca veri tabanından bir kaydı silerken dosyanın kendisinin mi silinmesi yoksa bırakılması mı gerektiğini sorar. Ancak özelliklerinin bütünlüğü açısından, onu öncekinden daha az beğendim - en azından dosyanın gönderinin dışına ayrı olarak yerleştirilmesi gerektiği için, ancak herhangi bir özel dezavantajı yok - aralarında seçim meselesi zevk, ilkinde daha fazla seçenek, daha ayrıntılı istatistikler var, ikincisi - biraz daha uygun (daha zayıf da olsa) istatistikler ve daha az fırsat.

    Ağır toplar harekete geçti. Eklenti çoğunlukla Ruslaştırılmıştır ve yalnızca bir indirme yöneticisidir, bir sayaç değil. İndirme hızını ve kişi başına günlük indirme sayısını sınırlamak mümkündür.

    Ancak bu eklentinin bazı özelliklerinin gereksiz olduğunu, istatistiklere göre ihtiyaç duyulanların da yeterli olmadığını söyleyebilirim. Çok sayıda ayar, indirme widget'ları, karmaşık bir senkronizasyon sistemi, mp3 etiketlerini görüntülemek, flv dosyalarını görüntülemek, mini dosya depolamayı düzenlemek, sayfada listelenen tüm dosyaları yazının başında veya sonunda görüntülemek için bir sistem var. vesaire vesaire.

    Tüm ayarların ekran görüntülerini bile göstermek istemiyorum.

    Ancak tüm bunlarla birlikte, şablonu yazıda güzel bir şekilde görüntülemek için, içindeki stil dosyasını genişliğini azaltarak düzenlemek zorunda kaldım. Ayrıca, varsayılan şablonu görüntülemek için kısa kodu girdikten sonra düğmeyi kullanmanız gerekir.

    Şablonun adını koda manuel olarak girin. Rus ismiyle bir tür çelişki. Bu arada, şuna benziyor (şablonlar için üç seçenek sunacağım):

    Bir güdük güvertesi aracılığıyla sayılır (peki, ya da bir IP'den birden fazla indirmeyi saymaz, bilmiyorum). İstatistikler yukarıda tartışılan eklentiye tamamen benzemekten biraz daha azdır.

    Genel olarak onun sağlıklı ama aptal olduğu izlenimine kapıldım. Bir tür dosya depolama için uygundur ve o zaman bile yalnızca başka bir eklentiyle birleştirildiğinde. Ona baktım ve indirdim.

    Açıkçası, açıklamasını okuduğumda şunu düşündüm: işte bu, ihtiyacım olan şey!

    Sayaç, şifre koruması, düğme eklenebilir kısa kod, düzenlenebilir düğme vb.

    Ve şuna benziyor (aynı anda kullanılan iki üç şablonu gösterdi):

    Ancak bir dosya eklemek için öncelikle eklentilerde dosyaya bir sayaç eklemeniz gerekir. İkincisi, neredeyse hiç istatistik yok.

    Üçüncüsü, çıktıyı kullanıcı için dosya boyutunu gösterecek şekilde ayarlayamazsınız. Dördüncüsü, indirme hızında herhangi bir sınır yoktur, dosya için yalnızca şifre koruması vardır. Şablonlar düzenlenemez. Ve premium sürümü 45 dolara satın almayı teklif eden büyük bir yazı. Genel olarak anlıyorsunuz. Lezzetli olan her şey para içindir. Devre dışı bıraktı ve yıktı. Ve güzel çerçeveler, düğmeler vb. - İstediğim zaman stillere kendim yazacağım.

    Özet

    Standart yöntemle yükleyin (dizine kopyalayarak wp-content/plugins/download-monitor/, güncellenmesine izin verin, tüm simgeleri dizindeki arşivdeki simgelerle değiştirin wp-content/plugins/download-monitor/img/filetype_icons/ ve etkinleştirin.

    Gelecekte, eğer bu konuyu çözebilirsem, bağlantıları css3 kullanarak güzel çerçevelere yerleştirmeyi düşünüyorum, büyük olasılıkla bunun hakkında da yazacağım. Bizi izlemeye devam edin :)

    Güncellendi. Artık yazar, WordPress Download Monitor eklentisini elden geçirdi ve orijinalinden tamamen farklı bir sürüm oluşturdu. Test ettim, ancak indirme bağlantısının nasıl görüneceğine ilişkin şablon şablonunun artık o kadar kolay düzenlenmemesi nedeniyle çok daha az beğendim. Yazar, hazır önceden yüklenmiş görünümlerin yeterli olacağına karar verdi. Örneğin, indirilenler menüsünde, ardından ayarlarda, önceden ayarlanmış altı görünümden istediğiniz görünümü seçin, kaydet'e tıklayın

    Daha sonra ikinci seçeneği seçtiğinizde şöyle bir şey elde edersiniz:

    Onlar. Açık Yeni sürüm Açıklamada verdiğim satırı kullanmak işe yaramayacaktır ancak bu çıktı şablonunu tanımlayacak özel bir PHP dosyası yazmanız gerekecektir. Ancak en üzücü olan şey bu bile değil - eklentinin bulunduğu dizine yerleştirilirse bu php dosyasının, eklenti her güncellendiğinde üzerine yazılacağı gerçeği. Ve onu temalı bir dizine koyarsanız, o zaman temayı değiştirdiğinizde (bu elbette çok daha az sıklıkta olmasına rağmen). Ancak her halükarda bunu yazmak oldukça emek yoğun bir iştir ve şu ana kadar bunu yapma arzum yok. Yani güncellenen eklentinin tek artısı

    Komut dosyalarımdan birinin siteden kaç kez indirildiğini görmeye karar verdim. Bunu yapmak için siteye bir dosya indirme sayacı yazmaya karar verdim. İnternette bu sorunun birçok uygulaması var, ancak yine de çözümüme göz atın.

    İndirme sayacının arkasındaki mantık oldukça basittir. Bunu uygulamak için en sevdiğim ajax'ı kullanacağız. Clik olayı oluştuğunda butona ajax üzerinden çağrı ekliyoruz php dosyası tezgah. Php'de ajax isteği işlenir ve toplam yarış sayısı bir metin dosyasına yazılır. Başarılı bir kayıttan sonra, toplam indirme sayacını içeren bir yanıt gönderilir ve kullanıcı, dosyayı indirme bağlantısına yönlendirilir (dosya indirilir). Bu kadar basit bir mantık, şimdi uygulamaya başlayalım. Önceden indirilebilir bir test.zip dosyası oluşturalım. Butonu kodlayıp yarış sayacını gösterelim.

    Dosyayı indir Yarış sayısı:

    id='btnSend' ile bir buton oluşturduk, id='countView' ile bir aralıkta sayacı görüntüleyeceğiz ve indirilen dosyanın bağlantısını data-download özelliğinde saklayacağız.

    Şimdi düğmeye bir tıklama işleyicisi ekleyelim. Burada zaten js ve jquery kullanacağız. Jquery kullanarak clik'in nasıl uygulanacağını okuyabilirsiniz. Ancak tıklama işleyicisini kurmadan önce, sayacın tüm çalışmalarını içerecek olan count.php dosyasına ajax ile erişeceğiz. Ajax veri aktarımı hakkında daha fazla bilgi edinebilirsiniz. Bu, sayacın halihazırda yapılmış olan indirmelerin sayısını yazdığı ve bunları id = "countView" ile bir aralıkta görüntülediği dosyadan çıktı almak için gereklidir.

    /*mevcut indirme sayısını al*/ $(document).ready(function())( //ajax isteğinin önbelleğe alınmasını yasakla //aksi takdirde sayaç başarısız olur $.ajaxSetup((cache: false)); var html ; $.ajax (( //veri türünü nasıl aktaracağız: "GET", //url'yi nereye aktaracağız: "count.php", //hangi verileri aktaracağız: (flag: 2), // count.php'den yanıt aldıktan sonraki olay başarı : function(data)( html=data; //mevcut indirme sayısını görüntüler $("#countView").html(html); )); /*bir etkinlik ekleyin dosya indirme düğmesine*/ var clickevent=false; //test bayrağına tıklayın //işleyiciye tıklayın $("#btnSend").click(function())( if(!clickevent)( $.ajax(( //how) veri türünü aktaracağız: "GET", //nereye aktaracağız url: "count.php", //hangi verileri aktarıyoruz veri: (flag: 1), //ajax gönderilmeden önce olaySend: function( ))( //butona basıldıysa true clickevent=true; ), //cevap alındıktan sonra olay, //veri başarımında veriyi alıyoruz: function(data)( //işlemleri tamamladıktan sonra izin veriyoruz tekrar //düğmeye tıklamayı işlemek için clickevent=false; html=veri; //yeni bir sayaç görüntüle $("#countView").html(html); //veri indirmeden bağlantıyı alın //indirme bağlantısına yönlendirin, dosyayı indirin window.location.href = $("#btnSend").data("download"); ) )); ) false değerini döndür;//click olayının işlenmesini yasakla )); ));

    Gönder düğmesine yanlışlıkla tekrar basılmasını önlemek için, betiğe clickevent bayrağını ekledim. Count.php'den güncellenmiş sayaç verileriyle birlikte yanıt gelene kadar düğmeye tıklamak yasaktır. Butona tıkladıktan sonra kodun işleyişinin az çok açık olduğunu düşünüyorum. İndirme düğmesine tıklandıktan sonra veriler count.php dosyasına aktarılır, burada işlenir ve güncellenmiş sayaç verileri döndürülür, indirme bağlantısına bir yönlendirme gerçekleşir ve buna göre dosya indirilir.

    Şimdi betiğimizin kalbine, yani count.php dosyasına bakalım.

    Function clearInt ($date)( //tarihi negatif olmayan bir sayıya indirgeyin return abs((int)$date); ) if($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest") ( //hangi bayrağın olduğunu kontrol edin alınan if (clearInt($_GET["flag"]==1)) ( //dosyayı okumak için açın $f=fopen("mycount.txt","a+"); //diğer dosyalardan dosyaya erişimi kapatır programlar akın($ f,LOCK_EX); //sayaç değerini dosyadan alın $count=fread($f,100); //sayacı ekleyin @$count++; //ftruncate($f,0) dosyasının üzerine yazın ; //fwrite ($f,$count) okuyan yeni bir sayaç yazın; //dosyayı kapatın fclose($f); //değeri döndürün echo $count; ) if(clearInt($_GET["flag"]= =2)) ( $c=fopen(" mycount.txt","a+"); akın($c,LOCK_EX); $festc=fread($c,100); fclose($c); //geri döndür değer echo $festc; ))

    Burada da aynı şeyi düşünüyorum, her şey basit. Bayrak 1 gelirse sayacı yeniden yazıyoruz. Bayrak 2 gelirse, indirme sayısına ilişkin veriler basitçe döndürülür. Sanırım diğer her şey koddaki yorumlardan açıkça anlaşılıyor.

    Joomla indirme sayacı

    Benzer bir sayacı Joomla projelerimden birine eklemeye karar verdim. Teorik olarak elbette ya ayrı bir modül yazmanız ya da kodu com içerik bileşeninin denetleyicisine entegre etmeniz gerekir, böylece sayaç verileri bir dosyaya değil, veritabanına ve her makale için ayrı ayrı yazılır. Ancak böyle bir gelişme için zaman yok ve sorunu daha basit bir şekilde çözdüm. Bir sayfa için sayaca ihtiyacım vardı. Count.php dosyasını aldım ve şu anda bağlı olan Joomla şablonuna aktardım (site şablonlarının/şablonuzun kökünde). Tanımlanan kodu ("_JEXEC") eklemeyi veya count.php'nin en üstüne ölmeyi unutmayın. (bu Joomla içindir). Oluşturduğumuz sayfaya indirme butonunu ekliyoruz ve js kodu da sayfaya gömülebilir veya ayrı bir dosya olarak bağlanabilir. Örneğin, onu ayrı bir dosya olarak aldım (şablonun js klasöründe bulunur). Şablonun kendisinde, başlıkta bağlantı kod aracılığıyla gerçekleşir

    
    Tepe