Ir para conteúdo

POWERED BY:

Arquivado

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

estudante_php

Implementar Programa de Afiliados em PHP

Recommended Posts

Galera, tentei implementar um programa de afiliados mas esbarrei numa questão. A grosso modo:

 

 

PÁGINA DO AFILIADO

<script type="text/javascript" src="http://www.meusite.com/afiliado.js"></script>
<a href="#" onclick="javascript:contar_click(ID_AFILIADO);">Banner do Comercial XYZ</a>

 

 

LADO DO SERVIDOR

 

afiliado.js:

function contar_click (id) {
location ("contar.php?id=" + id );
}

 

contar.php:

<?php
$id = $_GET['id'];
echo "contou mais um clique para " . $id;
?>

 

 

Ai vem minha questão: se o cara acessar afiliado.js vai sber que aponta pra contar.php?id=ID_DO_AFILIADO dai é só construir um robô que chama várias vezes essa URL pra ganhar muitos cliques....Como evitar isso??

 

Valew!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, então a página que vai controlar os cliques está no seu servidor? porque se estiver você poderia registrar o ip de quem entrou, (tipo em bd, txt ou xml) e não contar mais de um clique para aquele IP, não se esqueça que todo dia você teria que limpar esse registro de ips...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem um problema com sua abordagem: Pode haver dois ou mais computadores que compartilham o mesmo IP, se ambos estiverem acessando a partir do mesmo modem de uma NET por exemplo.

 

Preciso de uma solução via programação mesmo...Em todo o caso, obrigado.

 

Alguma outra idéia ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem um problema com sua abordagem: Pode haver dois ou mais computadores que compartilham o mesmo IP, se ambos estiverem acessando a partir do mesmo modem de uma NET por exemplo.

 

Preciso de uma solução via programação mesmo...Em todo o caso, obrigado.

 

Alguma outra idéia ?

 

Olá,

 

a forma mais viável é por IP mesmo. Geralmente não é um problema tão grande só um usuário com um IP poder votar.

Se você limpar os logs a cada hora, ou a cada dia, acredito que o seu problema é minimizado.

 

Agora, se é estritamente necessário que todos possam votar, você pode forçar as pessoas a se cadastrarem antes de votarem, e só permitir um voto por cadastrado.

 

 

Essas são as melhores abordagens, penso. Não tem como pegar uma informação única do computador (como o mac address) via PHP.

 

 

PS:Se você não for capaz (ainda) de fazer alguma dessas coisas sozinho, avise. Acredito que uma solução via programação seria o código pronto, correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem um problema com sua abordagem: Pode haver dois ou mais computadores que compartilham o mesmo IP, se ambos estiverem acessando a partir do mesmo modem de uma NET por exemplo.

 

Preciso de uma solução via programação mesmo...Em todo o caso, obrigado.

 

Alguma outra idéia ?

 

Olá,

 

a forma mais viável é por IP mesmo. Geralmente não é um problema tão grande só um usuário com um IP poder votar.

Se você limpar os logs a cada hora, ou a cada dia, acredito que o seu problema é minimizado.

 

Agora, se é estritamente necessário que todos possam votar, você pode forçar as pessoas a se cadastrarem antes de votarem, e só permitir um voto por cadastrado.

 

 

Essas são as melhores abordagens, penso. Não tem como pegar uma informação única do computador (como o mac address) via PHP.

 

 

PS:Se você não for capaz (ainda) de fazer alguma dessas coisas sozinho, avise. Acredito que uma solução via programação seria o código pronto, correto?

 

 

 

 

Então, é estritamente necessário mesmo o voto individualizado. Na verdade, se você notou no meu código, o ID do usuário é passado, então logicamente ele já passou por um cadastro previamente.

 

 

não esquento com mac address...

 

bem, coloquei o meu código ai.. Se tiver algo melhor que atenda a essas expectativas, por favor poste ai pr gente ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você me entendeu errado. O que é cadastrado são os afiliados (os banners). Pra um sistema de voto único por conta funcionar, todo usuário que fosse votar teria que ter um cadastro.

 

Se isso não for uma possibilidade, você pode sempre usar um captcha, pra impedir um bot de votar. Eu recomendo o ReCaptcha.net, do google. Tem instruções de como usar-lo em PHP na página da API (resources & docs).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você me entendeu errado. O que é cadastrado são os afiliados (os banners). Pra um sistema de voto único por conta funcionar, todo usuário que fosse votar teria que ter um cadastro.

 

Se isso não for uma possibilidade, você pode sempre usar um captcha, pra impedir um bot de votar. Eu recomendo o ReCaptcha.net, do google. Tem instruções de como usar-lo em PHP na página da API (resources & docs).

 

 

você não entendeu: O captcha é legal mas ele serve pra votação/poll...O que estou fazendo é sistema de afiliados. Nenhum usuário vai clicar no banner e preencher captcha pra acessar alguma coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideia então seria receber o parametro via $_GET[''], depois registrar um $_COKKIE[''] que expirasse a cada 24 hrs, assim você limitaria cada máquina a votar 1 vez por dia apenas. então na pagina de voto você verifica se o usuario tem o não este cokkie.

 

 

É claro que se o usuario limpar o navegador ae ferra, então você teria que usar um esquema para bloquear o ip também, mas talvez com o cookie já de certo

:P

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideia então seria receber o parametro via $_GET[''], depois registrar um $_COKKIE[''] que expirasse a cada 24 hrs, assim você limitaria cada máquina a votar 1 vez por dia apenas. então na pagina de voto você verifica se o usuario tem o não este cokkie.

 

 

É claro que se o usuario limpar o navegador ae ferra, então você teria que usar um esquema para bloquear o ip também, mas talvez com o cookie já de certo

:P

 

 

Hmm...Cookie sounds good! Poderia salvar no cookie assim = ID + IP . Que tal ???

 

 

Mas se o usuário desativar cookies no browser, vou ter que usar SESSION, o que me leva a duas questões:

 

1) O usuário pode desativar o uso de sessões?

 

2) Há limite para o número de variáveis numa sessão?

 

 

Valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como a maioria dos navegadores os cookies são habilitados, vai ser poucos usuarios que você vai ter que usar a 2ª opção então acho melhor você salvar no banco de dados ao inves de sessao...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como a maioria dos navegadores os cookies são habilitados, vai ser poucos usuarios que você vai ter que usar a 2ª opção então acho melhor você salvar no banco de dados ao inves de sessao...

 

 

 

1) O usuário pode desativar o uso de sessões?

 

2) Há limite para o número de variáveis numa sessão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode criar 2 sessoes

 

$_SESSION['id'] = $_GET['id'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];

 

O usuário não pode desativar as sessoes, pois elas ficam no 'server', então é muito poco provavel, você também pode criar uma unica sessao com um array também se preferir. mas o ponto é, se o usuario estiver com os cookies desabilitados significa que ele tem um pouco de conhecimento no sistema e está tentando burlar, então da mesma forma que você criar uma session ele pode interceptar os dados, então seria melhor você salvar os dados em um banco de dados, como eu disse vai ser poucos usuarios que vão estar com os cookies dos navegadores desabilitados :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode criar 2 sessoes

 

$_SESSION['id'] = $_GET['id'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];

 

O usuário não pode desativar as sessoes, pois elas ficam no 'server', então é muito poco provavel, você também pode criar uma unica sessao com um array também se preferir. mas o ponto é, se o usuario estiver com os cookies desabilitados significa que ele tem um pouco de conhecimento no sistema e está tentando burlar, então da mesma forma que você criar uma session ele pode interceptar os dados, então seria melhor você salvar os dados em um banco de dados, como eu disse vai ser poucos usuarios que vão estar com os cookies dos navegadores desabilitados :thumbsup:

 

 

 

Agora que lembrei: o problema da SESSION é que não funciona entre browsers diferentes enquanto cookies funcionam, certo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum, vou ser sincero olha vamos supor que você crie o cookie com ip+id, ou uma session com ip+id, ou até mesmo grave no banco de dados os valores do ip+id, você não concorda que se o usuario reiniciar o pc, ou o modem da net e voltar com um outro ip, teoricamente o cookie iria barra, mas se ele reiniciar o pc e limpar o cache do navegador a session praticamente não valerá para nada, pois ele consiguirá burlar, o ideal seria utilizar os 3 métodos há não ser que tenha outra solução, como nunca fiz isso até hj não pensei em alguma forma de se fazer :thumbsup:

 

Mas se não me falhe a memória o rapidshare e o megaupload era burlado assim :P (E lá eles bloquea por ip), ou seja, se estiver na mesma rede já era

 

 

 

Mas se você estiver afim de ir a fundo nisso de uma pesquisa sobre Hiddens , é basicamente o sistema que os bancos usam :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) O usuário pode desativar o uso de sessões?

 

As sessões do PHP utilizam cookies, os dados da sessão são armazenados no servidor e o ID da sessão é enviado para o navegador do usuário através de cookie.

 

Se os cookies estiverem desabilitados o PHP tenta passar o ID da sessão via GET. Por exemplo:

 

http://www.site.com.br/script.php?PHPSESSID=1f3870be274f6c49b3e31a0c6728957f

 

Quando as sessões utilizam cookies, por padrão a vida útil delas é até o navegador ser fechado, mas a vida do cookie da sessão pode ser alterada. Já quando o ID da sessão é passado por GET o PHP só vai conseguir resgatar a sessão enquanto o ID se manter no URL.

 

Portanto, o uso de sessões não é aconselhável para o seu caso.

 

Acredito que apenas cookies também não deva ser usado, já que qualquer um pode sabotar o seu sistema apagando os cookies do navegador ou desabilitando o seu uso.

 

A melhor opção realmente seria o controle por IP.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leo, agora que você falou nisso eu me toquei um detalhe, recentemente eu fiz um projeto aqui na empresa, na minha máquina localmente funcionou normal, mas qnd subi ele p/ o servidor ele ficou desta forma como você mencionou acima

http://www.site.com.br/script.php?PHPSESSID=1f3870be274f6c49b3e31a0c6728957f

Lembro que na época até abri um topico aqui, pq não tinha encontrado nada na net com relação há isso, só que um detalhe importante.

 

Utilizo cookies e sessão, e esse valor só é passado no momento de um novo cadastro, ou seja, nenhuma sessão ou cookie é criado, estranho não é? Porque teoricamente era pra funcionar somente durante a requisição da página

Compartilhar este post


Link para o post
Compartilhar em outros sites

André, provavelmente o seu navegador estava com os cookies desabilitados.

 

Se na página que você utilizar a função session_start o PHP não conseguir criar o cookie com o ID da sessão ele vai tentar inserir o ID nos links da página, por isso se você clicar em um link que leve a outra página vai estar com o ID da sessão no URL, mesmo que essa página não use sessões.

 

Não sei se era essa a sua dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu leo, a duvida era essa mesma, eu queria saber pq estava acontecendo de passar esse ?PHPSESSID via $_GET, sendo que eu nao tinha instanciado nada no codigo-fonte :thumbsup:

 

Hum entendi, aproveitando o embalo do topico, se isso acontecer se passar esse valor via $_GET, se torna um nivel de vunerabilidade alto? ou até mesmo uma chance para qualquer um consegui burlar e até fazer algo em meu sistema? :(

Por exemplo um CSS, INJECTION e etc...?

 

:thumbsup:

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.