Ir para conteúdo

POWERED BY:

Arquivado

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

Will1102

Sistema de votação com restrição de IP

Recommended Posts

Olá pessoal! Sou novo aqui no fórum e sou novo como programador também. A minha dúvida é bem simples, porém não consegui achar uma resposta em lugar nenhum.

 

Criei um formulário de votação. Tem 27 concorrentes. Conectei com o banco de dados. Até aí funcionou direitinho. Porém, o IP não vai pro banco de dado. Os id e os votos são adicionados, mas sem o IP não tem como eu fazer com que alguém vote somente uma vez.

 

Será que poderiam me ajudar?

 

Desde já agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

dessa forma:

 

$_SERVER['REMOTE_ADDR'];

 

Mas eu não sei a função (if) pra fazer com que apareça uma mensagem "você já deu o seu voto" caso já contenha o IP no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente fazer uma função para pegar o ip como essa (OBS: Eu uso essa funcão e funciona perfeitamente) :

 

function getIP() {
$ip;
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "DESCONHECIDO";
return $ip;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi Rogério. Desculpe a ignorância, como disse sou bem novo em programação. Eu estive pesquisando melhor esse assunto e pelo que eu vi, se eu fizer uma restrição por IP isso faria com que somente uma pessoa na mesma casa com a mesma rede ou em uma lan house conseguisse dar o seu voto. O melhor seria mesmo filtrar por cookies. Mas eu não tenho a menor idéia de como fazer isso por cookies. E nesse caso, se a pessoa apagar o histórico, isso não possibilitaria a pessoa de dar novamente o seu voto???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, se limpar os cookies poderia votar novamente, mas também se mudar o IP poderá votar várias vezes. Como é uma votação aberta, fica não se tem meios 100% eficazes, pelo menos que eu conheça.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Will1102,

 

Uma forma rápida e simples, seria você criar um cookie com o IP sem expiração e verificar se esse cookie existe. Você pode salvar o nome do cookie como sendo o próprio IP. Lembrando que seria uma forma BEM simples.

Se tiver dúvidas de como criar um cookie, aqui tem um explicação bem legal: http://blog.thiagobelem.net/trabalhando-com-cookies-no-php/

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se tem a quantidade exata de pessoas para votar.

 

poderia criar um usuario e senha particular para cada e um campo de status_voltou que por padrão e n ou seja não e quando a pessoa logar e ao click no tipo do voto o status e atualizado para 's' e o voto +=1, com uma mensagem caso o usuário tente votar novamente.

Com isso seria 100% protegido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso me fez pensar em algo.

To precisando também de um sistema de votação, publico onde quero que uma pessoa só vote uma vez.
Eu usei todas alternativas, mas bastava limpar os cookies e pronto, podia votar.

E se usar o curtir do facebook, sera que daria? Por ex:

A pessoa vota na opção que prefere clicando no curtir, e vc pega o numero de clikes e armazena no seu banco.

Desta forma a pessoa só consegue votar uma vez, e ainda divulga no facebook.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui fazer uma restrição por cookie. Porém, agora eu não consigo enviar pro meu banco de dados o valor email. Segue o código. O que está errado??? Lembrando também que o "Resultado" aparece na mesma página assim que eu voto...

 

 

 

<?php
$servidor = "?????????????";
$usuario = "???????????";
$senha = "??????????";
$bd = "?????????";
$conexao = mysql_connect($servidor, $usuario, $senha) or die ("Erro ao realizar a conexão");
$seleciona = mysql_select_db($bd);
setcookie('enquete_php');
if (isset($_COOKIE['enquete_php']))
{
exit ('<p>Você já votou nesta enquete.</p>'.$_COOKIE['enquete_php']);
}
$nome = $_POST ['nome'];
$email = $_POST['email'];
$query = mysql_query("INSERT INTO votos2 (email) VALUES ('$email')");
$voto = $_POST ['debutante'];
if($voto <> "") {
$query = mysql_query("INSERT INTO votos2 (voto) VALUES ('$voto')");
}
$valor1 = mysql_query("SELECT * FROM votos2 WHERE voto=1");
$valor2 = mysql_query("SELECT * FROM votos2 WHERE voto=2");
$valor3 = mysql_query("SELECT * FROM votos2 WHERE voto=3");
$valor4 = mysql_query("SELECT * FROM votos2 WHERE voto=4");
$valor5 = mysql_query("SELECT * FROM votos2 WHERE voto=5");
$valor6 = mysql_query("SELECT * FROM votos2 WHERE voto=6");
$valor7 = mysql_query("SELECT * FROM votos2 WHERE voto=7");
$valor8 = mysql_query("SELECT * FROM votos2 WHERE voto=8");
$valor9 = mysql_query("SELECT * FROM votos2 WHERE voto=9");
$valor10 = mysql_query("SELECT * FROM votos2 WHERE voto=10");
$valor11 = mysql_query("SELECT * FROM votos2 WHERE voto=11");
$valor12 = mysql_query("SELECT * FROM votos2 WHERE voto=12");
$valor13 = mysql_query("SELECT * FROM votos2 WHERE voto=13");
$valor14 = mysql_query("SELECT * FROM votos2 WHERE voto=14");
$valor15 = mysql_query("SELECT * FROM votos2 WHERE voto=15");
$valor16 = mysql_query("SELECT * FROM votos2 WHERE voto=16");
$valor17 = mysql_query("SELECT * FROM votos2 WHERE voto=17");
$valor18 = mysql_query("SELECT * FROM votos2 WHERE voto=18");
$valor19 = mysql_query("SELECT * FROM votos2 WHERE voto=19");
$valor20 = mysql_query("SELECT * FROM votos2 WHERE voto=20");
$valor21 = mysql_query("SELECT * FROM votos2 WHERE voto=21");
$valor22 = mysql_query("SELECT * FROM votos2 WHERE voto=22");
$valor23 = mysql_query("SELECT * FROM votos2 WHERE voto=23");
$valor24 = mysql_query("SELECT * FROM votos2 WHERE voto=24");
$valor25 = mysql_query("SELECT * FROM votos2 WHERE voto=25");
$valor26 = mysql_query("SELECT * FROM votos2 WHERE voto=26");
$valor27 = mysql_query("SELECT * FROM votos2 WHERE voto=27");
?>

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.