Ir para conteúdo

POWERED BY:

Arquivado

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

Wilson Ferreira

[Resolvido] Sistema de referidos

Recommended Posts

Olá a todos!

 

Eu sou novo em php e estou a construir um site com algumas partes em php.

 

Estive a procurar no forum mas não encontrei nenhum tutorial sobre como criar um sistema de referidos.

Será que alguém me podia ensinar passo a passo a como criar um?

 

O sistema seria em php e mysql.

 

O que eu pretendo é o seguinte:

 

Quando uma pessoa se regista no site, é-lhe atribuído um endereço para convidar/divulgar. Um endereço do tipo "http://www.website.com/index.php?r=username"(ou parecido) em que o "username" se mantém em todas as páginas do site que a pessoa visita.

Exemplo: index.php?r=username

signup.php?r=username

contact.php?r=username

etc.

 

Ao entrar na página de registo, o campo "referido por:" é automaticamente preenchido com o "username".

Exemplo: "referido por: username".

 

Fazer um sistema seguro em que se compara(ou de uma outra forma) datas, ip's, etc, para que seja mais difícil para um usuário criar contas referindo-se a si mesmo.

 

Uma página em que o usuário pudesse ver os seus referidos e pudesse elimina-los/(também gostava de aprender como fazer um sistema para que os usuários possam enviar mensagens entre si e ao receber, ser notificados por email. Mas isso só mais tarde, porque ainda estou a aprender e preciso ir devagar :D)

 

Uma página na conta do administrador em que é exibida uma lista de usuários e seus referidos.(se não for muito complexo)

 

De momento não me lembro de mais características mas assim que me lembrar posto.

 

 

Será que alguém poderia postar passo a passo como fazer isso?

Agradecia imenso e desde já dou os parabéns por esta bela comunidade ;)

 

 

Um abraço para todos,

Wilson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atribua uma ID e um campo IP a cada usuário do banco de dados. Você pode usar a ID como referido.

 

Já o IP, na hora do registro, você pode comparar com o IP atual da máquina e exibir uma mensagem de erro se eles forem iguais :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atribua uma ID e um campo IP a cada usuário do banco de dados. Você pode usar a ID como referido.

 

Já o IP, na hora do registro, você pode comparar com o IP atual da máquina e exibir uma mensagem de erro se eles forem iguais :)

 

Desde já muito obrigado pela sua resposta ;)

 

Cada usuário já possui uma ID que é automaticamente atribuída ao cadastrar.

Quanto ao IP, a tabela de usuários já começa a ficar com demasiados campos e eu gostaria de por isso noutra base de dados ou noutra tabela.

 

A minha dificuldade é fazer com que, através do link de referido, a pessoa possa visitar qualquer página do site sem "perder" o ID da pessoa que a referiu.

E também os outros aspectos, como exibir os referidos e poder apagar etc.

 

Obrigado pela sua ajuda, vou tentando fazer o que consigo e no resto espero que alguém me possa ajudar ;)

 

Um abraço,

Wilson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nos links, você verifica:

<?php
if($_GET['r']){
  echo "<a href='signup.php?r=".$_GET['r']."'>";
} else{
  echo "<a href='signup.php'>";
}
?>

Claro que está bem cru, mas é seguindo essa lógica que faz. Você pode fazer diferente, visando enxugar seu código (exemplo: gravando numa session, aí só precisa passar o ?r=username uma vez) :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desde já obrigado pela sua ajuda, BigJhow.

 

Eu consegui o seguinte.

 

Na página inicial(index.php), coloca-se o seguinte código:

<?php
session_start();
$id = htmlspecialchars($_GET["r"]);  //retira o nome da pessoa que referiu do endereço
$_SESSION['r'] = $id;  //guarda esse mesmo nome numa session

//no caso de a pessoa intrduzir o endereço com um nome diferente,
if($id != $_SESSION['r']){  //verifica se esse nome é diferente do que está guardado na session
unset($_SESSION['r']);  //se isso realmente se verificar, apaga a session
$_SESSION['r'] = $id;  //e guarda a session com o novo nome
}
?>

 

Nas páginas onde se vai utilizar o nome guardado na session, coloca-se apenas o seguinte:

<?php
session_start();
?>

 

 

 

Da forma que eu fiz, para que o nome de quem referiu se mantenha guardado, a pessoa só pode entrar na página "index.php" apenas uma vez, que será quando vititar o tal link: "www.website.com/index.php?=username" ou "www.website.com/?=username".

 

Caso a pessoa visite uma vez o link "www.website.com/index.php?=username" e de seguida visitar "www.website.com/index.php" ou "www.website.com",

o nome é apagado.

 

Para quem está a iniciar, penso que já é um bom começo :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já consegui fazer um sistema muito simples e sem verificação de ip, etc.

 

Como os códigos estão nos ficheiros do meu site, não os vou postar aqui.

 

No caso de alguém estar interessado em saber alguma coisa ou em ajuda sobre alguns códigos é só perguntar ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Wilson,

 

Pelo visto você é de Portugal, aqui no Brasil esse tipo de sistema é mais conhecido como programa de afiliados.

 

Para armazenar a identificação do usuário que fez a indicação geralmente se usa cookies, assim mesmo que o indicado acesse várias páginas do seu site ou feche o navegador e volte 15 dias depois por exemplo, você ainda terá como resgatar a identificação do indicador.

 

Usando sessões você só poderá identificar até o momento que o usuário fechar o navegador, não sei isso seria do seu interesse.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Wilson,

 

Pelo visto você é de Portugal, aqui no Brasil esse tipo de sistema é mais conhecido como programa de afiliados.

 

Para armazenar a identificação do usuário que fez a indicação geralmente se usa cookies, assim mesmo que o indicado acesse várias páginas do seu site ou feche o navegador e volte 15 dias depois por exemplo, você ainda terá como resgatar a identificação do indicador.

 

Usando sessões você só poderá identificar até o momento que o usuário fechar o navegador, não sei isso seria do seu interesse.

 

Um abraço!

 

 

Olá Leo,

 

Como não tinha a certeza de como se chamava eu dei este nome, mas se houver alguma forma de mudar ;)

 

Penso que para o caso sessões bastam, se o usuário não se registar naquele momento penso que não se vai registar muito mais tarde...

Mas é realmente uma boa ideia, desta forma quem indicou o usuário tem menos possibilidades de perder um afiliado

 

Só uma questão. Eu já estou a usar cookies para o login, não há problema se usar novamente para este sistema?

 

Muito obrigado pela sua ajuda, foi realmente útil ;D

 

 

Um abraço

 

 

 

Edit:

Já consegui fazer com cookies em vez de sessions.

 

O código ficou assim:

$id = htmlspecialchars($_GET["r"]);    
if($id != ""){
setcookie("r", $id, time()+2592000);
if($id != $_COOKIE['r']){
	setcookie("r", $id, time()+2592000);
}
}

 

 

Ao criar o cookie, eu posso escolher por quanto tempo o nome usuário que referiu a pessoa vai ficar guardado.

Neste caso, o nome vai ficar guardado por 30 dias pois eu adicionei 2592000 segundos ao tempo actual da criação do cookie.

 

Obrigado pela sua dica leo ;)

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.