Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Moura de Jesus

Contagem de cliques por link exibido!

Recommended Posts

Fala ai pessoal. Estou com um probleminha que ta me deixando de zói roxo de tanto pesquisar!

Preciso saber a quantidade de cliques feita nos links, porém são vários links em uma página só, e minha contagem deve ser de 5 cliques para cada link. Lembrando que o mesmo não pode continuar ao clicar nos outros links.

Estou tentando montar um sistema anti-bot. Sei que existem outras forma, porém estou empenhado em fazer este.

 

Vamos lá

Aqui é o código html:

<!--CAIXA BOX 1-->
<div class="box-ads ba-123">
                    <div class="bot b-123" style="display:none; position:absolute;">
                    	Clique no botão vermelho
                        <div class="btn-bot" style="position:relative;"></div>
                    </div>
                    <div class="ant-bot a-123">
                        <div class="tit-box box-d"><span>Kayads pagando sempre</span></div>
                        <div class="text-box">
                        	<p>Aqui vai uma mini observação sobre o seu anúncios</p>
                        </div>
                    </div>
                        <div class="foot-box">
                        	<span class="val-ads">R$0.001</span>
                            <span class="temp-ads">5 segundos</span>
                        </div>  
                        <a href="javascript:void(0)" title="" class="linkar abc" onClick="adsBot(123);"></a>  
                    </div><!--Fim box ads-->


<!--CAIXA BOX 2-->
<div class="box-ads ba-125">
                    <div class="bot b-125" style="display:none; position:absolute;">
                    	Clique no botão vermelho
                        <div class="btn-bot" style="position:relative;"></div>
                    </div>
                    <div class="ant-bot a-125">
                        <div class="tit-box box-d"><span>Kayads pagando sempre</span></div>
                        <div class="text-box">
                        	<p>Aqui vai uma mini observação sobre o seu anúncios</p>
                        </div>
                    </div>
                        <div class="foot-box">
                        	<span class="val-ads">R$0.001</span>
                            <span class="temp-ads">5 segundos</span>
                        </div>  
                        <a href="javascript:void(0)" title="" class="linkar abc" onClick="adsBot(125);"></a>  
                    </div><!--Fim box ads-->

Este código exibe apenas uma caixa de várias outras que são exibidas por um foreach() via php. Os números destacados são o "id" da informação vinda do banco de dados.. Cada caixa obviamente apresenta seu id.

 

Estou usando o "id" do conteúdo nas marcações de class para identificar a box quando for chamada pela função adsBot(id do conteúdo);

Isto porque não achei como distinguir o elemento "class" através do item(), por JQuery. Se alguém souber por favor me informe.

 

Enfim o Javascript:

var cont = 0;
function adsBot(id){
    var PWidth = Math.floor(Math.random() * 200);
    var PHeight = Math.floor(Math.random() * 55);
    var botId = $(".b-"+id);
    var botClass = $(".bot");
    var antBotId = $(".a-"+id);
    var anBotClass = $(".ant-bot");

      cont++;
      alert(cont); // só para demonstrar a contagem

      if(cont > 4){
       botId.html("Anúncio bloqueado");
}else{
	
	botId.html("<a href='javascript:void(0)' onClick='marcarBox("+id+");' class='btn-bot' style='position:absolute; left:"+PWidth+"px; top:"+PHeight+"px; z-index:99;'><img src='_img/btn-bot.png'></a>");
	botClass.fadeOut(0);
	botId.fadeIn(0);
	anBotClass.fadeIn(0);
	antBotId.fadeOut(0);

}
...............// mais códigos    }

Perceba que deste modo eu consigo contar os cliques sem problemas e quando eu chegar a contagem 4(5 vezes), eu executo uma função que ainda não determinei, porém vai bloquear o acesso ao link.

O maior problema é que seu eu clicar uma vez na primeira caixa e depois na outra, e outra.... A contagem continua e isto não pode acontecer.

Meu objetivo é o limite de 5 cliques por cada caixa e não 5 cliques por todas as caixas que irão aparecer. E isto eu não estou conseguindo devido a variável cont.

A variável global "cont" esta determinando um valor sem se importar com o link que estou clicando, ou seja, não importa em qual link eu clico, ela está lá para me bloquear quando alcança os 5 cliques mesmo sendo 1 clique por cada caixa. kkkk.

 

Um exemplo forte sobre o que quero fazer é esta no link abaixo

clique no anúncio apresentado 5 vezes (fora da bolinha vermelha, porem dentro do anúncio)e vai aparecer uma mensagem, e não poderá mais clicar a não ser que atualize a página.

 

http://www.neobux.com/m/v/?vl=5BDA493A229B22FA12FD47A36F3E2A93

 

meu exemplo:

http://www.linkptc.com/caixs.html

 

Repare que a contagem dos cliques é por cada caixa(anúncio).

No meu caso quando clico 5 vezes, não importa em qual caixa seja, o bloqueio vai para todas as caixas. Se eu pudesse nomear a variável global "cont" de acordo com o anuncio(caixa), eu conseguiria, porém a mesma precisa estar dentro de uma função para receber os parâmetros do anúncio(caixa).

 

 

Ta osso viu ! kkkk se alguém puder me ajudar eu agradeço.

 

 

:yes: :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicionar um .data() ao box principal e, ao clicar, incrementa esse valor.

Eu até tinha colocado seu código no jsFiddle e ia passar o link, mas, encontrei coisas que não entendi bem o porque.

Primeiro:

var botId = $(".b-"+id);
var botClass = $(".bot");
var antBotId = $(".a-"+id);
var anBotClass = $(".ant-bot");

Por que isso? botId é igual a botClass e antBotId é igual a anBotClass. Porque essa repetição?

Outra coisa

botClass.fadeOut(0);
botId.fadeIn(0);
anBotClass.fadeIn(0);
antBotId.fadeOut(0);

Por que dar um fadeOut e, em seguida, um fadeIn no mesmo elemento (já que botClass == botId) ??

E, imagino que o 0 (zero) seja pra não ter animação. Se for o caso, tem a função .show()/.hide() pra isso

botClass.hide();
botId.show();
anBotClass.show();
antBotId.hide();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rafel obrigado pelas instruções!

explicando as variáveis:

 

botId pega uma class que varia de acordo com determinado anúncio.

 

botClass pega a class fixa. que todos as caixas de anúncio possui.

 

Isto porque, ao clicar em um anúncio, os efeitos sejam feitos somente naquele anúncio sem afetar os outros.

botClass é destina a fazer o efeito em todos os anúncios.

 

Um exemplo dito é que quando clico em um anúncio, acontece um efeito que determinei e quando clico em outro, o efeito do anúncio anterior que foi clicado, precisa se desfeito. Aí é onde uso a class fixa que todos os anúncios possui.

 

Esta foi interpretação que consegui fazer para os efeitos funcionar.

 

Sobre os efeitos hide() e show(). bem pensado. Isto me passou desapercebido. Obrigado!

 

Vou usar o data() e ponho a conclusão logo aqui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei usando data e não deu!

A variável cont tem que ser global e de acordo com o anúncio clicado. por exemplo: cont1, cont2, cont3.

Se eu determinar esta variável dentro da função, a contagem de cliques não funciona.

posso pegar o atributo data fora da função, porém, o mesmo não funcionará porque não estará de acordo com o anúncio clicado.

 

Código completo:

view-source:www.linkptc.com/caixs.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi...

Faz assim então, define a variável global como objeto/array e no click, cria ou incrementa o valor. Copiei e colei seu codigo no jsFiddle fazendo essas alterações. Da uma olhada:

http://jsfiddle.net/vLwsr8Lu/

Outra coisa, a função marcarBox deve estar fora adsBot para funcionar. Entao, no jsFiddle, deixei ela fora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Permite uma sugestão?

 

O code ficou bem legal, porém se o objetivo é de fato bloquear após determinado cliques, apenas com js e jquery não irá ficar legal.

 

Se der um Run ou F5 na página ele começa tudo novamente.

 

Bom seria trabalhar com cookies ou melhor pegar o IP do user e armazenar o mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente, wilnet.

Confesso que ainda não entendi bem o objetivo do código. Mas, pra garantir da melhor forma este bloqueio, utilize cookies ou, se não se importar com navegadores antigos, localStorage/sessionStorage.


Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já pensei neste fato!

porém o bloqueio é somente pelas tentativas insistentes, perceba que quando clica em uma anúncio aparece um pequena imagem. Esta imagem é o link de redirecionamento para exibir o anúncio.

 

O objetivo é que não haja um autoclick. Repare que a imagem vai trocando de posição de acordo com os cliques. Isto justamente para evitar os cliques automáticos. Porém caso não houvesse esse limite de cliques, o autoclick clicaria até conseguir pegar a pequena imagem e redirecionar para a página ou site em questão.

 

 

Após o bloqueio, minha intenção é liberar os anúncios bloqueados novamente após um refresh.

Aqueles que obteve sucesso clicando na pequena imagem(bolinha vermelha), estará bloqueado também, pois será permitido apenas uma visita por dia.

 

Além deste bloqueio, mais para frente quando clicarem no anúncio "corretamente", haverá um outra confirmação a ser realizada através de anti-bot, ou seja decifrar as letras e números que aparecerem.

 

Enfim após esta grande ajuda, vamos caminhar para os próximos passo.

Obrigado pela ajuda e sugestões!

 

E caso queiram acompanhar o andamento, é só falar que postamos aqui!

abs..

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi...

 

Faz assim então, define a variável global como objeto/array e no click, cria ou incrementa o valor. Copiei e colei seu codigo no jsFiddle fazendo essas alterações. Da uma olhada:

 

http://jsfiddle.net/vLwsr8Lu/

 

Outra coisa, a função marcarBox deve estar fora adsBot para funcionar. Entao, no jsFiddle, deixei ela fora.

Essa sugestão que eu dei, resolveu o seu problema da variavel global?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verificando.... já volto!


Quase Rafael.

Só repare no seguinte!

Clique 3 vezes no primeiro e depois mais 2 vezes no segundo.

Volte a clicar no primeiro!

 

Repare que está bloqueado. Eles somaram sendo que são id diferentes.

 

Algo em mente!

 

Rafael desculpe Códico certinho. Interpretei mau aqui! Sou vou adicionar um complemento.

Se o arquivo estiver bloqueado, ao clicar nele vai aparecer a mensagem de bloqueio.

 

Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.