Instalando um contador de downloads - revisão de plugins para WordPress. Criando um contador de download de arquivos usando PHP e MySQL Salvando arquivos de texto e gráficos

Em muitos sites você pode ver links para baixar arquivos. Por exemplo, as empresas fabricantes publicam instruções para um determinado produto em suas páginas oficiais. Além disso, os desenvolvedores Programas Também oferecem o download gratuito do seu programa, permitindo ao usuário familiarizar-se com suas funções e funcionamento.

Ao disponibilizar um arquivo para download gratuito, é importante saber quantas vezes ele foi baixado. Isto é necessário, em primeiro lugar, para as estatísticas, cuja análise ajudará a determinar a utilidade da informação para o utilizador final.

Como definir um contador de downloads em um site WordPress?

Não há como ver essas estatísticas entre as ferramentas do WordPress. Portanto, usaremos uma solução de terceiros - o plugin Kama Click Counter.

Plug-in Kama Click Counter

O plugin gratuito Kama Click Counter fornece todas as ferramentas necessárias para contar com precisão o número de downloads de um arquivo específico. Então, em primeiro lugar, ele precisa ser instalado e ativado. Por exemplo, exibiremos na página do post um link para um arquivo pdf, para o qual contaremos o número de downloads. Deve-se observar que os arquivos são carregados no site usando métodos padrão Bibliotecas de mídia WordPress (Mídia -> Adicionar novo). Em seguida, você precisa abrir a postagem ou página para edição. Na parte do conteúdo, você precisa colocar o cursor no local onde será colocado o link para o arquivo e clicar no botão que aparece na barra de ferramentas do editor visual.

Em uma janela pop-up, o plugin solicitará que você selecione o arquivo baixado anteriormente. Para fazer isso, pressione o botão com o ícone da lupa.

Na biblioteca de arquivos de mídia, selecione o arquivo desejado e clique no botão Selecionar arquivo.

Como resultado, um shortcode especial será inserido na parte de conteúdo da postagem ou página, que serve para exibir um link para download do arquivo.

Após atualizar o material (botão Atualizar), você pode acessar o site para visualizá-lo.

O plugin também é capaz de mostrar estatísticas de download na parte do usuário do site – em um widget. Observe que por padrão o plugin não mostra números específicos no widget sobre o que foi baixado e quantas vezes. Apenas uma lista dos arquivos baixados com mais frequência é exibida. Para fazer isso, vá para a seção de administração Aparência -> Widgets e arraste o widget KSS:Top Downloads para o local desejado na barra lateral.

Você pode ver que o widget possui diversas opções disponíveis que permitem modificar a lista.

Aqui você pode definir os seguintes parâmetros básicos:

  • título do widget (campo Título);
  • número de arquivos de saída na lista (quantos links mostrar?);
  • ordenando os resultados (como ordenar o resultado?);
  • contexto aparência template (blocos de modelo e modelo CSS).

Uma característica especial do plugin é a personalização flexível do modelo. Aqui você pode usar as chamadas tags, no lugar das quais esta ou aquela informação será exibida.

Depois que todas as configurações do widget forem concluídas e salvas (botão Salvar), você poderá visualizar o resultado no site.

Faz muito tempo que não há aulas sobre PHP e MySQL. Hoje criaremos um contador de downloads simples, mas eficaz.

Cada arquivo terá uma entrada em uma linha da tabela do banco de dados. O número de downloads de arquivos será armazenado na mesma tabela. PHP atualizará o banco de dados MySQL e redirecionará o usuário para arquivo necessário.

Para rastrear o número de downloads de qualquer arquivo, você precisa colocá-lo na pasta de arquivos e usar uma URL especial para acessá-lo.

Passo 1 – XHTML

O primeiro passo é criar a marcação para nosso script. É muito simples - temos um gerenciador de arquivos div que contém uma lista não ordenada, na qual cada elemento da lista é responsável por um arquivo.

Os arquivos cujos downloads precisam ser rastreados são colocados na pasta de arquivos na pasta raiz do script. O PHP então percorre todos os arquivos e adiciona cada um deles como um elemento de lista (li) à lista não ordenada.

demonstração.php


  • baixar photoShoot-1.0.zip 0

Observe que o atributo href dos links passa o nome do arquivo como parâmetro para download.php. É aqui que ocorre o rastreamento do número de downloads.

Você não precisa exibir tudo da mesma maneira - você pode simplesmente criar um link para download.php em suas páginas e todos os downloads não serão realizados.

Passo 2 – CSS

Após a marcação, vamos começar com o design. As regras CSS abaixo referem-se ao div do gerenciador de arquivos usando id (símbolo #), pois ele aparece apenas 1 vez na página, e aos demais elementos por nomes de classes.

estilos.css

#file-manager( cor de fundo:#EEE; borda:1px sólido #DDD; margem:50px automático; preenchimento:10px; largura:400px; )
ul.manager li( background:url("img/bg_gradient.gif") repita-x centro inferior #F5F5F5; borda:1px sólido #DDD; border-top-color:#FFF; estilo de lista:none; posição:relativa ; ) ul.manager li a( display:block; padding:8px; ) ul.manager li a:hover .download-label( /* Ao passar o mouse sobre o ícone, mostra o texto verde de download: */ display:block; ) span . download-label( background-color:#64B126; border:1px solid #4E9416; color:white; display:none; font-size:10px; padding:2px 4px; position:absolute; right:8px; text-decoration: nenhum ; text-shadow:0 0 1px #315D0D; top:6px; /* Cantos arredondados CSS3 */
-moz-border-radius:3px; -webkit-border-radius:3px; raio da borda:3px; ) span.download-count( cor:#999; tamanho da fonte:10px; preenchimento:3px 5px; posição:absoluto; decoração de texto:nenhum; )

Etapa 3 - PHP

Como eu disse antes, o PHP procura arquivos na pasta de arquivos e gera cada arquivo como um item de lista em uma lista não ordenada. Vamos dar uma olhada em como isso acontece

demonstração.php - parte do topo

// Relatório de erros: error_reporting(E_ALL^E_NOTICE); //: requer "connect.php"; $extensão=""; $arquivos_array = array(); /* Abra a pasta e percorra todos os arquivos: */ $dir_handle = @opendir($directory) or die("Há um erro com seu diretório de arquivos!"); while ($arquivo = readdir($dir_handle)) ( /* Pular arquivos do sistema: */ if($arquivo(0)==".") continuar; /* end() exibe o último elemento do array gerado pela função explode(): */ $extension = strtolower(end(explode(".",$file))); /* Ignorar arquivos php: */ if($extension == "php") continue; $arquivos_array=$arquivo; ) /* Classifica os arquivos em ordem alfabética */ sort($files_array,SORT_STRING); $file_downloads=array(); $resultado = mysql_query("SELECIONE * FROM download_manager"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* A chave do array $file_downloads será o nome do arquivo e conterá o número de downloads: */ $file_downloads[$row ["nome do arquivo"] ]=$linha["downloads"]; )

Observe como selecionamos todas as linhas da tabela download_manager usando mysql_query() e depois as adicionamos ao array $file_downloads com o nome do arquivo como chave para o número de downloads. Assim, mais adiante no código, podemos escrever $file_downloads["archive.zip"] e exibir o número de downloads.

Abaixo você pode ver o código que gera os itens da lista:

demonstração.php - parte do meio

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

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

    Tudo é feito simplesmente usando um loop foreach no array $files_array. Depois disso, tudo é gerado usando echo.

    Agora vamos dar uma olhada mais de perto em como funciona o rastreamento de arquivos.

    baixar.php

    // Verificação de erros: error_reporting(E_ALL^E_NOTICE); // Inclui o arquivo de conexão ao BD: require("connect.php"); if(!$_GET["file"]) error("Parâmetro ausente!"); if($_GET["arquivo"](0)==".") error("Arquivo errado!"); if(file_exists($directory."/".$_GET["file"])) ( /* Se o visitante não for um search bot, contamos o download: */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filename ="".mysql_real_escape_string($_GET["file"])."" ON DUPLICATE KEY UPDATE downloads=downloads+1"); header("Local: ".$directory."/".$_GET[ "arquivo"] ); exit; ) else error("Este arquivo não não existe!"); /* funções auxiliares: */ function error($str) ( die($str); ) function is_bot() ( /* Esta função verifica se há um robô */ $botlist = array("Teoma", " alexa ", "froogle", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory", "Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot " , "crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp", "msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz", "Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot", "Mediapartners-Google", "Sogou web spider", "WebAlta Crawler", "TweetmemeBot", "Butterfly", "Twitturls" , "Me.dium","Twiceler"); foreach($botlist as $bot) ( if(strpos($_SERVER["HTTP_USER_AGENT"],$bot)!==false) return true; // É um bot ) return false; // Não é um bot)

    É importante verificar se o seu visitante é um humano ou um robô de mecanismo de busca. Os robôs são certamente bons, mas não vamos permitir que distorçam as nossas estatísticas. É por isso que a linha no banco de dados é atualizada somente após a verificação is_bot().

    Passo 4 - MySQL

    Como observamos na etapa anterior, o número de downloads é armazenado como uma linha na tabela download_manager. Primeiro, vamos explicar como funciona essa solicitação:

    baixar.php

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

    Ele diz ao MySQL para inserir uma nova linha na tabela download_manager e definir o campo filename da linha com o valor do arquivo chamado para download. Entretanto, o campo nome do arquivo é designado como um índice exclusivo na tabela. Isso significa que cada linha só pode ser inserida uma vez, caso contrário ocorrerá um erro de chave duplicada.

    É aqui que a segunda parte da consulta funcionará - ON DUPLICATE KEY UPDATE dirá ao MySQL para adicionar um à coluna de downloads se o arquivo já existir no banco de dados.

    Dessa forma, novos arquivos serão adicionados automaticamente ao banco de dados na primeira vez que forem baixados.

    Etapa 5 - jQuery

    Para fazer o rastreamento em tempo real, seria bom atualizar o contador próximo ao nome do arquivo após cada download.

    Faremos isso usando jQuery:

    script.js

    $(document).ready(function())( /* O código é executado após o carregamento da página */ $("ul.manager a").click(function())( var countSpan = $(".download -count",this); countSpan.text(parseInt(countSpan.text())+1); )); ));

    Simplesmente atribuímos um manipulador de cliques aos links que levam aos arquivos e, a cada clique, adicionamos um valor.

    Etapa 6 - htaccess

    Há mais uma coisa que precisa ser feita. Download.php redireciona o usuário para o arquivo solicitado que foi passado como parâmetro. No entanto, você deve ter notado que os navegadores tentam abrir alguns tipos de arquivos diretamente. Precisamos iniciar seu carregamento. Isso pode ser feito com algumas linhas dentro do arquivo .htacess, que está localizado na pasta de arquivos.

    Aplicativo ForceType/fluxo de octetos

    Agora nosso balcão está completamente pronto!

    Conclusão

    Para que a demonstração funcione, você precisa recriar a tabela download_manager no banco de dados MySQL. Você pode encontrar o código SQL necessário nas fontes.

    Depois disso, adicione seus dados para conexão ao banco de dados no arquivo configuration.php.

    // Remove a conversão do modo de aspas mágicas $_POST["content"] = addlashes($_POST["content"]);

    // Reescreva o conteúdo do arquivo file_put_contents($_POST["filename"], "$_POST");

    4.9. Contador de download de arquivos

    O funcionamento de todos os contadores de download de arquivos baseia-se no fato de que o visitante não recebe o arquivo em si como link de download, mas sim um link para um script que leva em consideração o download e envia o arquivo para o navegador do usuário.

    Construiremos nosso contador de forma que os links para download de um arquivo sejam links para a página atual, passando o nome do arquivo como parâmetro, por exemplo, index.php?down=archive.zip . O script verificará se o parâmetro down foi passado e, em caso afirmativo, registrará o download do arquivo em filecount.txt. Quando a página for recarregada, os valores do contador de cada arquivo serão extraídos do arquivo para saída na janela do navegador. O arquivo será transferido para download enviando o cabeçalho HTTP Location ao visitante indicando o caminho para o arquivo baixado. O script do contador de download de arquivos pode ser semelhante ao mostrado na Listagem 4.31.

    Listagem 4.31. Contador de download de arquivos

    // Define o nível de tratamento de erros error_reporting(E_ALL & ~E_NOTICE);

    // Registra nomes de arquivos em um array

    $nome_arquivo = array("arquivo1.zip","arquivo2.zip","arquivo3.zip");

    // Nome do arquivo onde as estatísticas são armazenadas $countname = "filecount.txt";

    //Se o arquivo existir,

    // lê as estatísticas atuais em um array if(file_exists($countname))

    // Obtém o conteúdo do contador

    $content = file_get_contents($countname);

    //Descompacte o array

    $contar = desserializar($conteúdo);

    // Se não existir tal arquivo, crie-o,

    // e reseta as estatísticas

    //Preenche o array $count com valores zero foreach($file_name as $file)

    $contagem[$arquivo] = 0;

    // Empacote o array e coloque-o no contador file_put_contents($countname, serialize($count));

    // Verifica se o valor do parâmetro down foi passado

    //através do método GET

    if(isset($_GET["para baixo"]))

    // Verifica se o valor do parâmetro $_GET["down"] está incluído

    //no array $file_name

    if(in_array($_GET["down"],$nome_arquivo))

    // Registra o fato de que este arquivo foi baixado

    //Aumenta o valor do contador com a chave

    // $_GET["down"] por um

    $contagem[$_GET["para baixo"]]++;

    // Sobrescrever o arquivo do contador file_put_contents($countname, serialize($count));

    echo "O arquivo $file foi carregado ".intval($count[$file])." vezes
    ";

    Os nomes dos arquivos baixados são armazenados no array $file_name; adicionar um novo arquivo resulta em seu registro automático no sistema. O pré-registro na matriz é necessário por diversos motivos. Primeiro, ao aceitar o nome de um array através do parâmetro down, você precisa verificar se ele está entre os arquivos que podem ser carregados. Em segundo lugar, é muito mais conveniente processar nomes de arquivos em um array. Assim, o array $count, que armazena o número de downloads de arquivos, é construído automaticamente com base no array de arquivos cadastrados no sistema,

    É conveniente empacotar um array em uma string usando a função serialize() e, em seguida, descompactá-lo de volta em um array usando a função unserialize().

    OBSERVAÇÃO

    É importante lembrar que todos os cabeçalhos HTTP devem ser enviados antes do envio do conteúdo principal, caso contrário eles não serão enviados e o interpretador PHP emitirá um aviso "Atenção: Não é possível modificar as informações do cabeçalho - cabeçalhos já enviados por"

    (Atenção: não é possível modificar as informações do cabeçalho - os cabeçalhos já foram enviados). Isso é ditado pelo protocolo HTTP: os cabeçalhos são enviados primeiro, depois o conteúdo do documento, portanto, qualquer saída para a janela do navegador é percebida como o fim do envio dos cabeçalhos e o início do envio do corpo do documento. Se a saída para a janela do navegador for inevitável antes do envio dos cabeçalhos, você deverá recorrer a funções de controle de saída, colocando toda a saída em um buffer e enviando-a no final do script.

    Como você pode ver na Listagem 4.31, o script trata da situação de primeira execução em que o arquivo filecount.txt está faltando - ele é criado automaticamente no primeiro carregamento da página, acionado por valores zero para cada arquivo no array $file_name. O resultado do script da Listagem 4.31 pode ser visto na Fig. 4.4.

    Arroz. 4.4. O resultado do contador de arquivos

    4.10. Salvando arquivos de texto e gráficos

    Seguir um link para arquivos de texto ou HTML faz com que eles sejam exibidos na janela do navegador, o que nem sempre é conveniente, especialmente se o arquivo for para download. O mesmo destino espera arquivos gráficos e, em geral, quaisquer arquivos que o navegador possa exibir. O navegador do visitante "aprende" o conteúdo do arquivo do servidor, pois cada arquivo é acompanhado por cabeçalhos HTTP que informam ao cliente sobre o conteúdo, o tamanho do arquivo baixado, a necessidade de definir um cookie, etc. o tipo de arquivo não pôde ser determinado, ele é enviado simplesmente como fluxo binário.

    Você pode suprimir esse comportamento enviando os cabeçalhos HTTP mostrados na Listagem 4.32.

    Listagem 4.32. Um script que permite salvar arquivos de texto e gráficos

    $nomedoarquivo = nomebase($_GET["down"]); header("Disposição do conteúdo: anexo; nome do arquivo = $ nome do arquivo"); header("Tipo de conteúdo: aplicação/fluxo de octetos"); header("Comprimento do conteúdo: ".filesize($_GET["down"]));

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

    O script na Listagem 4.32 usa um nome de arquivo como parâmetro GET, por exemplo,

    index.php?down=filetext.txt. A função basename() recupera o nome

    arquivo (caso o parâmetro GET down contenha o caminho para o arquivo). O cabeçalho HTTP Content-Disposition especifica o nome do arquivo a ser salvo, que é determinado pelo atributo filename. No script acima, o parâmetro filename é igual ao nome do arquivo que está sendo enviado, porém, um nome arbitrário pode ser passado como parâmetro filename. O cabeçalho HTTP Content-type indica que os dados que estão sendo transferidos são binários e não devem ser interpretados pelo navegador. O cabeçalho HTTP Content-length transmite o tamanho do arquivo ao cliente. A última linha exibe o conteúdo do arquivo passado pelo parâmetro $_GET["down"], que é recuperado usando a função file_get_contents(). O resultado do script da Listagem 4.32 é mostrado na Fig. 4.5.

    OBSERVAÇÃO

    É importante que após a saída do conteúdo do arquivo, nada mais seja enviado para o fluxo: nem pela construção echo nem pela saída direta - caso contrário, tudo será anexado ao final do arquivo. Isso se aplica a possíveis espaços e novas linhas após a tag final?>.

    Arroz. 4.5. Caixa de diálogo para baixar um arquivo

    A próxima questão que me interessou recentemente ao configurar meu projeto de autor simples foi a questão de como contar o número de downloads de um determinado arquivo postado aqui. Era mais lógico supor que isso requer outro plugin, algum tipo de gerenciador de downloads ou, o que é mais simples, um contador de downloads. Depois de vasculhar a Internet, descobriu-se que, como sempre, há um vagão e um pequeno carrinho desses plugins. Mas, novamente, não há comentários sobre eles. Não está absolutamente claro o que escolher e, como sempre, tive que testar tudo sozinho. E com base nos resultados dos testes, este revisor foi criado. Demorou muito para escrever e o objetivo não era testar minuciosamente todos os plug-ins fornecidos com uma revisão completa de suas configurações, então você não encontrará capturas de tela detalhadas de cada um, mas haverá configurações importantes. Eu não queria falar sobre alguns deles - eles eram tão estúpidos, mas desde que olhei para eles, foi uma pena não escrever nada.

    Introdução.

    Assim, a tarefa era contar o número de downloads de um determinado arquivo definindo um contador de downloads para WordPress. Após um exame mais detalhado, ele se dividiu em várias subtarefas, ou melhor, em desejos de um plugin que o atendesse. Aqui está uma pequena lista deles:

    • É necessário que a quantidade de downloads seja exibida em algum lugar do painel de administração, com possibilidade de ordenação - quantos foram baixados por dia, por semana, mês, ano, total
    • Seria desejável poder ver gráficos/diagramas de downloads de arquivos em relação uns aos outros
    • Seria desejável poder ver gráficos/diagramas de downloads de arquivos ao longo do tempo
    • É aconselhável manter estatísticas sobre quando o arquivo foi baixado pela última vez
    • Possibilidade de exibir informações ao lado do link sobre quantas vezes o arquivo foi baixado, bem como seu tamanho e a data do download para o usuário que está prestes a baixá-lo. Bem, ou não retirar - a pedido do administrador
    • A capacidade de inserir o código responsável por isso usando um botão separado no painel de pós-escrita Editor TinyMCE(Não gosto de usar tags rápidas)
    • Capacidade de limitar a velocidade de download (por precaução)
    • Anexar uma função de upload a este plugin (upload de arquivos para o servidor) - pelo contrário, não desisti. FTP funciona bem para mim também. Mas se não interferir muito, então deixe ficar
    • Seria bom poder anexar um botão legal ao link de download - embora para mim seja suficiente escrever class="button"

    ABAP

    ⇬ Fazer download do arquivo!

    • Seria bom se ele contasse o número de downloads não só do seu site, mas simplesmente do link
    • Possibilidade de banir download direto arquivo sem mostrar onde ele está no servidor.

    Aqui está uma pequena lista.

    Análise

    Depois de decidirmos as especificações técnicas, começaremos a considerar o que nos é oferecido diretamente.

    1. Baixe o plugin Counter 1.2, baixado aqui.

    Inicialmente, a página do plugin foi localizada, mas o autor não a oferece suporte há mais de 4 anos. Criamos outra pasta para ele no diretório de plugins para mim - download-counter, e colocamos os dois arquivos lá. Como resultado - onde você pensaria? — as configurações aparecem nos registros. Muito original, mas ok.

    Vamos entrar e escrever o caminho para o arquivo download-manager.php (eu realmente não gosto de jogar nenhuma bobagem direto na raiz). E vamos ver o que temos. Faça upload do arquivo, verifique se ele foi baixado em modo manual, se você inserir um link direto no navegador, insira o caminho no plugin para criar um contador. Em teoria, deveria ser criado um ID, que então precisará ser inserido em todos os lugares. Mas nada funcionou - dá o erro “Erro - Não foi possível salvar a gravação”. Bem, ok, nós persuadimos, transferimos para a raiz download-manager.php - novamente nada, mesmo erro. Bem, para o inferno com você, peixinho dourado, não foi o suficiente para eu ainda entender os plugins dos quais o autor não desistiu. Além disso, a funcionalidade é praticamente zero.

    2. Baixe o plugin Counter Advanced 1.1, baixado.

    Direi imediatamente que também não funcionou para mim, então você pode ler sobre sua instalação e configuração apenas por interesse acadêmico. Essencialmente, este é o mesmo plugin, apenas ligeiramente modificado. Graças a Deus, embora as instruções não tenham sido traduzidas, você pode lê-las normalmente e não tentar entender o que o tradutor quis dizer. A propósito, no painel de administração parece ser um plugin completamente diferente, oferecendo atualização (sim, que diabos). Semelhante ao plugin anterior, sua página foi localizada e da mesma forma o autor não o oferece suporte há mais de 4 anos. Por analogia, criamos outra pasta para ele no diretório de plugins, a minha é o contador de downloads, e jogamos todos os arquivos lá. As configurações parecem, é claro, mais ricas, embora a velocidade de download seja limitada para todos os arquivos de uma vez e não esteja definida para cada um. Onde está o arquivo download-manager..php (não esqueça o nome do arquivo no final, mas adivinhei na primeira vez onde estão todos os downloads, o que me deixou com um espanto terrível. Como descobri mais tarde, Adivinhei o nome do diretório onde estão os downloads, aqui minha lógica funcionou 100% idêntica à do autor do plugin.

    Adicionamos os nomes das pastas que temos no servidor no diretório de downloads (nas configurações de “categorias e diretórios”) para facilitar a escolha do caminho para os arquivos. Se você não adicioná-los, terá que baixar tudo na raiz de downloads. Salve, você pode adicionar downloads. Isso é aproximadamente o que obtemos.

    Agora vamos tentar inseri-lo na postagem. Adicionamos um link, nele alteramos nosso link para o código, que é emitido diretamente nas configurações do plugin. E então... Foda-se! erro HTTP 500 (Erro interno do servidor): Ocorreu uma situação inesperada enquanto o servidor tentava concluir a solicitação. Bem, eu ia te dizer como adicionar um contador diretamente em uma postagem, e se no link dentro para fazer funcionar

    ABAP

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

    então você pode exibir um botão de download - ele está torto, na verdade. Chega de plugin, desperdiçou seu tempo. Na verdade, ele não mantém estatísticas, porque não descobriremos onde está a falha.

    Este é exatamente o plugin para o qual o acima mencionado Download Counter Advanced foi proposto para ser atualizado. Bem, ele sugere - e tudo bem, vamos fazer o download e ver. O plugin também não é atualizado há mais de 3 anos, e alguns usuários até fizeram correções em seu código. Está instalado com bastante sucesso, o ascetismo das configurações não inspira otimismo. A propósito, muito bem, eles adivinharam onde colocar as configurações - não pior do que no caso anterior. Adicionamos contadores na página de configurações, tudo parece ser exibido como deveria.

    Vamos ver o que adicionamos à postagem. Sim, não há botões. Ah, claro, esqueci aí que tudo é intuitivo. Vejamos as instruções. É necessário construir uma estrutura complexa composta por códigos de acesso como , baixado , e ao mesmo tempo (provavelmente por causa do CNC) não conta realmente nada.

    Portanto, não consideraremos isso mais adiante, juntamente com o plug-in Download Counter Chart que o acompanha, que exibe informações em forma gráfica.

    Foi escrito pelo nosso compatriota, mas infelizmente tudo o que pode fazer é exibir o número de pessoas que baixaram o arquivo ao lado do seu nome - não há estatísticas ou quaisquer outras vantagens fornecidas. Porém, se você é um amante do minimalismo, é disso que você precisa. Só não se esqueça, não há botões, um código de acesso como


    Contador de download DIY para WordPress

    você terá que inseri-lo manualmente. É muito bom que o autor tenha descrito tudo em detalhes, então não precisei testar sozinho.

    Bem, se estamos falando de plugins escritos por nosso pessoal, não podemos deixar de mencionar mais um. Sua grande vantagem é que permite contar não apenas o número de downloads de arquivos, mas também simplesmente cliques em links - não importa se levam a um arquivo ou apenas a outra página. Ou para um arquivo na página de outra pessoa :) Ele também vai contar isso, ou melhor, teoricamente deveria contar. As estatísticas também não são tão boas, não há botões no painel de edição e também não há restrições para downloads. Mas ainda é interessante ver. Portanto, baixamos e instalamos. Em princípio, há uma descrição bastante detalhada no site do autor, por isso não entrarei em muitos detalhes. Você deve sempre ter em mente que se precisar definir um contador em um arquivo ou link, você deve usar um tipo shortcode ou inserir a classe class="count" no link. Isso, claro, é chato, com um botão seria muito mais conveniente. Mas o mais chato é que depois de todos os esforços não consegui fazê-lo funcionar adequadamente - se um shortcode fosse usado, o link de download em si não era exibido, e se uma classe fosse usada, as estatísticas dos links não apareciam no painel de administração. As capturas de tela podem ser visualizadas pelo autor - se você gosta da ideia em si, experimente, talvez você tenha sucesso.

    Realmente muito simples. Não são necessários códigos de acesso, etc. Porém, este plugin fornece estatísticas apenas para o autor, para os visitantes, ao lado do link para o arquivo, ela não é exibida.

    No entanto, deve-se notar que são mantidas estatísticas detalhadas sobre quem baixou qual arquivo e quando. No entanto, não é muito conveniente de usar.

    As configurações incluem o seguinte:

    • Você pode especificar o diretório de onde os arquivos podem ser baixados
    • Você pode especificar os tipos de arquivos que podem ser baixados
    • Impedir a contagem de downloads de arquivos como autor
    • Defina o intervalo em segundos durante o qual cliques repetidos em um link do mesmo IP serão contados apenas uma vez
    • Limite o número de arquivos que podem ser baixados de um IP por dia
    • Use algum tipo de página intermediária com informações de que o download começará agora

    No entanto, tudo isso só funciona se você (como eu diria de forma mais simples...) tiver permissão para editar o arquivo .htaccess, ou se você especificar o link diretamente inserindo-o em

    Porém, como ele não tinha a capacidade de exibir estatísticas para os usuários, e eu não queria lembrar o tipo de link, parei de considerá-lo neste momento, decidindo retornar apenas se os outros plugins da fila não conseguissem resolver a tarefa.

    Em termos de exibição de informações, este plugin é muito semelhante ao discutido no parágrafo anterior. A diferença é que permite visualizar estatísticas separadamente semanalmente, mensalmente, para qualquer período e simplesmente os 10 primeiros. Em termos de capacidades, é muito mais miserável, não há estatísticas sobre o último download ou sobre um arquivo específico, sem falar na possibilidade de introduzir restrições ao download de arquivos. Não existe nenhuma documentação clara. Tive a impressão de que se tratava apenas de algum tipo de mal-entendido e não de um plugin. Não quero nem dar screenshots, mas para ser objetivo ainda vou dar, do autor.

    Bem, aqui estamos em algo mais ou menos digno. Quase meio milhão de downloads – isso quer dizer alguma coisa. A página oficial do plugin está localizada. Para inserir um arquivo em uma postagem, você precisa usar a seta acima do editor visual (o ícone em si não aparece nele)

    E na janela que aparece, selecione o arquivo desejado (este é um exemplo se já tiver sido carregado via FTP)

    Em seguida, clique no botão “Salvar novo download”

    e, indo para a próxima tela, selecione o formato de download e clique em Insira dentro de publicar. É possível que nada aconteça. O plugin está um pouco problemático com versões mais recentes WordPress. Portanto, você precisa clicar adicionalmente no link Visualizar downloads

    E então, tendo primeiro selecionado o formato de download, clique no link Inserir ao lado do arquivo exato que precisa ser inserido.

    Depois disso, o código de acesso correspondente, como

    ABAP

    [downloadid="7592" formato="1"]

    O plugin requer configuração manual precisa, mas nenhum WYSIWYG é fornecido. O bom é que você só precisa configurá-lo uma vez. Documentação detalhada está disponível no autor.

    Aqui está um exemplo de configuração:

    ABAP

    (título)

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

    Deve-se notar que as declinações não são suportadas, ou seja, se o arquivo foi baixado 21 vezes e você tem “raza” em seu modelo, então soará um pouco pouco russo.

    E aqui está a opção com o botão:

    ABAP

    - (descrição), (tamanho), upload (data,"Ymd"), tempos de download (hits)

    < ahref= "(url)" title="Downloaded (hits,"ни разу","1 раз","% раза"}">!} - (descrição), (tamanho), upload (data,"Ymd"), tempos de download (hits)

    Parece com isso:

    Bom, depois de algumas modificações, o meu começou a ficar assim (ainda sem botões):

    Código da linha:

    ABAP

    (filetype_icon) (título) (Tamanho do arquivo: (tamanho), Carregado: (data,"d.m.Y"), Tempos de download (hits))
    (descrição)

    A lista de possibilidades é bastante ampla:

    • Você pode fazer upload de arquivos usando-o (clicando na seta) ou especificar o local onde eles estão localizados, se eles foram carregados anteriormente via FTP, você pode simplesmente especificar o URL
    • Oculta a verdadeira localização do arquivo, você pode substituir qualquer combinação de URL necessária
    • Você pode usar o botão de download, incluindo o seu próprio
    • Downloads feitos pelo administrador e todos os IPs desnecessários incluídos na lista de exclusões de contadores não são considerados.
    • Devo contar downloads repetidos dentro de um determinado período do mesmo IP?
    • Você pode definir vários formatos - com imagem, com contador, sem contador, etc., e usar cada um deles na situação apropriada
    • Há um upload do log de download como um arquivo csv

    Se algum arquivo mp3 ou vídeo estiver sendo carregado, você precisará indicar se é um download forçado ou não. Se forçar - então clicando nele o download será feito, se você não marcar a caixa - reproduza e salve - clique com o botão direito. Gostaria de observar que os arquivos carregados com sua ajuda não são colocados onde seu diretório especial para arquivos foi criado, mas no wp-content/uploads/downloads/ criado por ele - você precisa se lembrar disso, bem como do fato de que ao excluí-los das estatísticas - os arquivos também são excluídos fisicamente do servidor. Com aqueles que são carregados via FTP, está tudo bem. Além disso, se você inserir um link em postagens diferentes para o mesmo arquivo, não entendi se isso iria resumi-los. Infelizmente, ele não suporta nenhuma restrição de download, exceto que você pode proibir o download para todos, exceto usuários registrados. Quando você quiser exibir o nome de um arquivo na linha inferior do navegador, ou precisar alterá-lo para seu ID, lembre-se de ir em configurações->links permanentes e salvar a configuração lá para que tudo seja escrito corretamente em . htaccess - sem isso os arquivos não serão baixados!

    As estatísticas são exibidas em três locais ao mesmo tempo - no console, nas informações sobre os arquivos e nos logs de download. Isso cria alguns inconvenientes, por exemplo, quando você precisa ver quando um arquivo foi baixado pela última vez, mas pode baixar estatísticas como um arquivo csv e depois classificá-lo no Excel. Considerando que o Excel possui capacidades diabólicas para construir as tabelas e gráficos necessários, talvez isso não seja ruim. No entanto, acho que as imagens dirão mais:

    Bem, uma captura de tela do próprio log:

    Ao mesmo tempo, uma grande vantagem é que um widget com estatísticas como esta aparece no console:

    Em geral, podemos dizer que depois de um pouco de configuração, o plugin faz seu trabalho perfeitamente.

    Este plugin foi escrito pelo mesmo autor do plugin WP-Polls, que eu, por exemplo, uso neste site. Embora goze, em comparação, de uma ordem de magnitude menos popularidade. Mas vamos ver se é merecido. Toda a documentação pode ser encontrada no site do autor. Em sua essência, o plugin é absolutamente idêntico ao anterior - o modelo é escrito exatamente da mesma maneira, não há restrições de download, exceto para usuários registrados ou não registrados, e você também precisa usar um shortcode como

    ABAP

    [downloadid="7592"]

    Bem, nos outros pontos:

    • Você pode fazer upload de arquivos usando ele (até dois MB, ou o que você indicou no php.ini), e indicar o local onde eles estão localizados, se eles foram carregados anteriormente via FTP, você pode simplesmente especificar o URL
    • Oculta a verdadeira localização do arquivo, mas não é possível substituir nenhuma combinação de URL necessária, existem apenas algumas opções fixas, a principal das quais não funcionou para mim
    • Pode ser configurado para exibir informações aos visitantes sobre o tamanho do arquivo, quantas vezes ele foi baixado, quando foi baixado
    • Você pode exibir um ícone para os tipos de arquivo correspondentes
    • Você pode zerar o contador ou definir o valor desejado

    No entanto, existem algumas diferenças. Em primeiro lugar, não existe um botão no editor visual com o qual você possa inserir um shortcode. Ou melhor, existe um botão, mas para utilizá-lo é necessário primeiro adicionar um contador para o arquivo nas configurações do plugin, e depois com este botão o ID do contador será adicionado diretamente na postagem. Em segundo lugar, existe apenas um modelo e não será possível exibir informações diferentes para arquivos diferentes. Entre as vantagens das estatísticas - mostra quando o arquivo foi baixado pela última vez, caso contrário só há desvantagens - sem upload para arquivo csv, sem visualização de quem baixou (sem IP), sem distribuição por data.

    Mas os ícones são mais bonitos (mais tarde os adicionei ao plugin anterior). O resultado do seu trabalho é assim:

    Além disso, ao excluir um registro do banco de dados, ele pergunta se o próprio arquivo deve ser excluído ou deixado. Mas pela totalidade de suas propriedades gostei menos do que o anterior - até porque o arquivo deve ser inserido separadamente fora do post, porém não tem desvantagens particulares - a escolha entre eles é uma questão de gosto, o primeiro tem mais opções, estatísticas mais detalhadas, o segundo - estatísticas um pouco mais convenientes (embora mais pobres) e menos oportunidades.

    A artilharia pesada entrou em ação. O plugin é principalmente russificado e é apenas um gerenciador de downloads, não um contador. É possível limitar a velocidade de download e o número de downloads por pessoa por dia.

    Mas eu diria que alguns dos recursos deste plugin são desnecessários e aqueles necessários de acordo com as estatísticas não são suficientes. Existem muitas configurações, widgets de download, um sistema de sincronização complexo, um sistema para exibir tags mp3, exibir arquivos flv, organizar um armazenamento de miniarquivos, exibir todos os arquivos listados na página no início ou no final da postagem, etc etc.

    Não quero nem mostrar capturas de tela de todas as configurações.

    Porém, com tudo isso, para exibir o template lindamente no post, tive que editar o arquivo de estilo nele, reduzindo a largura. Além disso, para exibir o modelo padrão, você deve usar o botão após inserir o shortcode

    Insira o nome do modelo no código manualmente. Algum tipo de conflito com o nome russo. Aliás, fica assim (darei três opções de templates):

    Conta - através de um stump deck (bem, ou não conta mais de um download de um IP, não sei). As estatísticas são um pouco menos que completamente semelhantes às do plugin discutido acima.

    No geral, fiquei com a impressão de que ele era saudável, mas estúpido. Adequado para algum tipo de armazenamento de arquivos, e mesmo assim somente se combinado com algum outro plugin. Eu olhei para ele e o tirei.

    Falando francamente, quando li sua descrição, pensei - é isso, o que eu preciso!

    Contador, proteção por senha, código de acesso inserível em botão, botão editável, etc.

    E fica assim (ele citou dois três modelos usados ​​​​ao mesmo tempo):

    Porém, para adicionar um arquivo, primeiro você precisa adicionar um contador para ele nos plugins. Em segundo lugar, praticamente não existem estatísticas.

    Terceiro, você não pode definir a saída para exibir o tamanho do arquivo para o usuário. Em quarto lugar, não há limite de velocidade de download, existe apenas proteção por senha para o arquivo. Os modelos não podem ser editados. E uma grande inscrição oferecendo a compra da versão premium por 45 dólares. Bem, em geral, você entende. Tudo que é delicioso é por dinheiro. Desativou-o e demoliu-o. E lindas molduras, botões, etc. - Eu mesmo anoto nos estilos quando quiser.

    Resumo

    Instale da maneira padrão (copiando para o diretório wp-content/plugins/download-monitor/, deixe-o atualizar, substitua todos os ícones por ícones do arquivo no diretório wp-content/plugins/download-monitor/img/filetype_icons/ e ativar.

    No futuro, se eu conseguir, estou pensando em colocar os links em belos frames usando css3, sobre o qual provavelmente escreverei também. Fique atento :)

    Atualizado. Agora o autor reformulou o plugin WordPress Download Monitor e criou uma versão completamente diferente da original. Testei, mas gostei muito menos porque o modelo do formulário de como ficará o link de download não é mais tão fácil de editar. O autor decidiu que visualizações pré-instaladas seriam suficientes. Por exemplo, se estiver no menu de downloads, depois em configurações, selecione a visualização desejada entre seis predefinidas, clique em salvar

    Então, quando você escolhe a segunda opção, você obtém algo assim:

    Aqueles. sobre nova versão Não funcionará usar a linha que forneci na descrição, mas você precisará escrever um arquivo PHP especial que descreveria esse modelo de saída. Mas o mais triste não é isso - mas o fato de que esse arquivo php, se colocado no diretório com o plugin, será sobrescrito toda vez que o plugin for atualizado. E se você colocá-lo em um diretório com um tema, então quando você muda o tema (embora isso, é claro, aconteça com muito menos frequência). Mas, em qualquer caso, escrevê-lo é uma tarefa bastante trabalhosa e, até agora, não tenho vontade de fazê-lo. Portanto, a única vantagem do plugin atualizado é

    Decidi ver quantas vezes um dos meus scripts foi baixado do site. Para fazer isso, decidi escrever um contador de download de arquivos para o site. Existem muitas implementações deste problema na Internet, mas mesmo assim dê uma olhada na minha solução.

    A lógica por trás do contador de downloads é bastante simples. Para implementá-lo usaremos meu ajax favorito. Anexamos uma chamada via ajax ao botão quando ocorre o evento clik arquivo php contador. No php, a solicitação ajax é processada e o número total de corridas é gravado em um arquivo de texto. Após uma gravação bem-sucedida, uma resposta é retornada com um contador total de downloads e o usuário é redirecionado para o link para download do arquivo (o arquivo é baixado). Esta é uma lógica tão simples, agora vamos começar a implementá-la. Vamos criar um arquivo test.zip para download com antecedência. Vamos codificar o botão e mostrar o contador da corrida.

    Baixar arquivo Número de corridas:

    Criamos um botão com id="btnSend" , exibiremos o contador em um intervalo com id="countView" e armazenaremos um link para o arquivo baixado no atributo data-download

    Agora vamos anexar um manipulador de clique ao botão. Aqui já utilizaremos js e jquery. Você pode ler sobre como implementar o clik usando jquery. Mas antes de instalar o manipulador de cliques, acessaremos ajax o arquivo count.php, que conterá todo o trabalho do contador. Você pode ler mais sobre transferência de dados ajax. Isso é necessário para gerar a saída do arquivo onde o contador escreve o número de downloads já realizados e exibi-los em um intervalo com id="countView"

    /*obter o número atual de downloads*/ $(document).ready(function())( //proibir o cache da solicitação ajax //caso contrário, o contador falhará $.ajaxSetup((cache: false)); var html ; $.ajax (( //como iremos transferir tipo de dados: "GET", //para onde iremos transferir url: "count.php", //quais dados iremos transferir data: (flag: 2), // evento após receber uma resposta de count.php sucesso : function(data)( html=data; //exibe o número atual de downloads $("#countView").html(html); ) )); /*anexar um evento para o botão do arquivo de download*/ var clickevent=false; //clique no sinalizador de teste //manipulador de cliques $("#btnSend").click(function())( if(!clickevent)( $.ajax(( //how iremos transferir o tipo de dados: "GET", //para onde iremos transferi-lo url: "count.php", //quais dados estamos passando data: (flag: 1), //evento antes de enviar ajax beforeSend: function( ))( //se o botão foi clicado então true clickevent=true; ), //evento após receber a resposta, //recebemos os dados em data success: function(data)( //após completar as ações, permitimos novamente //para processar o clique no botão clickevent=false; html=dados; //exibe um novo contador $("#countView").html(html); //obter o link do download de dados //redirecionar para o link de download, baixar o arquivo window.location.href = $("#btnSend").data("download"); ) )); ) return false; //proíbe o processamento do evento click )); ));

    Para evitar que o botão enviar seja pressionado novamente por engano, introduzi o sinalizador clickevent no script. Até que a resposta do count.php retorne com os dados atualizados do contador, será proibido clicar no botão. Acho que o funcionamento do código após clicar no botão fica mais ou menos claro. Após clicar no botão de download, os dados são transferidos para o arquivo count.php, onde são processados ​​​​e os dados atualizados do contador são retornados, ocorre um redirecionamento para o link de download e, consequentemente, o arquivo é baixado.

    Vejamos agora o coração do nosso script, ou seja, o arquivo count.php.

    Function clearInt ($date)( //reduz a data para um número não negativo return abs((int)$date); ) if($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest") ( //verifica qual flag foi recebido if (clearInt($_GET["flag"]==1)) ( //abre o arquivo para leitura $f=fopen("mycount.txt","a+"); //fecha o acesso ao arquivo de outros programas rebanho($ f,LOCK_EX); //obtém o valor do contador do arquivo $count=fread($f,100); //adiciona o contador @$count++; //sobrescreve o arquivo ftruncate($f,0) ; //escreve um novo contador lendo fwrite ($f,$count); //fecha o arquivo fclose($f); //retorna o valor echo $count; ) if(clearInt($_GET["flag"]= =2)) ( $c=fopen(" minhaconta.txt","a+"); rebanho($c,LOCK_EX); $festc=fread($c,100); fclose($c); //retorna o valor echo $festc; ) )

    Aqui penso a mesma coisa, tudo é simples. Se o sinalizador 1 aparecer, reescrevemos o contador. Se o sinalizador 2 aparecer, os dados sobre o número de downloads serão simplesmente retornados. Todo o resto, eu acho, fica claro nos comentários do código.

    Contador de downloads do Joomla

    Decidi anexar um contador semelhante a um dos meus projetos Joomla. Em teoria, é claro, você precisa escrever um módulo separado ou integrar o código ao controlador do componente de conteúdo com, para que os dados do contador sejam gravados não em um arquivo, mas no banco de dados e para cada artigo separadamente. Mas não há tempo para tal desenvolvimento e resolvi o problema de forma mais simples. Eu precisava do contador para uma página. Peguei o arquivo count.php e o transferi para o template Joomla, que está atualmente conectado (na raiz do site templates/your_template). Não se esqueça de inserir o código definido("_JEXEC") ou morrer no topo do count.php. (isto é para Joomla). Inserimos o botão de download na página que criamos, e o código js também pode ser incorporado na página ou conectado como um arquivo separado. Por exemplo, eu o tenho como um arquivo separado (está localizado na pasta js do modelo). No próprio template, no cabeçalho, a conexão ocorre através de código

    
    Principal