segunda parte do nosso tutorial sobre enquetes, agora falando sobre votos únicos (impedir que o mesmo usuário vote mais de uma vez na enquete) e também sobre a exclusão de uma enquete.
OBS.: Os arquivos utilizados são os mesmos criados no tutorial anterior (sistema de enquete simples em php), portanto, caso você ainda não tenha feito, veja o tutorial neste link: http://infolayer.net/linguagens/php/30-enquete-simples-php
Então vamos lá...
Primeiramente vamos permitir apenas um voto por usuário. Para isso, abra o arquivo enquete.php e ache as seguintes linhas:
Apague as duas linhas e coloque o seguinte código no lugar
- if(!$_COOKIE['enquete_site']){ //verifica se já existe um cookie com o nome enquete_site no computador do usuário, se não existir
-
-
-
- $SQLquery = "UPDATE tblenc SET encval$voto = encval$voto+1, enctot = enctot+1 where encid=$encid";
-
- $SQLresult = mysql_query($SQLquery,$SQLid); //adiciona o voto
-
- setcookie("enquete_site", $_SERVER['REMOTE_ADDR'], time()+86400); //cria um cookie no computador do usuário com o nome enquete_site, contendo o IP do usuário e válido por 86400 segundos, ou seja, 24 horas, após isso o cookie expira e a mesma pessoa pode votar novamente
-
- }else{ //se já existir o cookie enquete_site
-
- echo "Você já votou nesta enquete. De qualquer forma, veja o resultado atual da enquete";
-
- }
-
-
Pronto, o “bloqueio” está feito. Veja que usamos cookies para verificar se o usuário votou. O único problema é que se o usuário limpar os cookies do computador, ele vai poder votar novamente. Então a pergunta: não seria melhor guardar o ip do usuário no banco de dados e fazer a verificação por aí? A resposta é: daria na mesma, pois bastaria o usuário desconectar e conectar novamente que o ip é renovado, e também pelo próprio Windows o usuário pode renovar o ip.
Agora a parte de exclusão de enquetes. Na pasta admin, crie os seguintes arquivos:
- remover_enquete.php e excluir.php
Antes de codificar esses arquivos, abra o arquivo admin.php (também está na pasta admin) e adicione a seguinte linha:
Agora sim, abra o arquivo remover_enquete.php e digite o seguinte código:
<p>Escolha a enquete que deseja remover:</p>
<?
$servidor="localhost";
$usuario="root";
$password="";
$base="enquete";
$SQLid = mysql_connect($servidor,$usuario,$password);
mysql_select_db($base,$SQLid);
$SQLQuery = "Select * from tblenc"; //sql que seleciona todas as enquetes do banco de dados
$res = mysql_query($SQLQuery); //executa a sql acima
echo "<table border='1'>";
while ($linha = mysql_fetch_assoc($res)){
$encid = $linha['encid'];
$encprg = $linha['encprg'];
echo "<tr><td>$encprg</td><td><a href='excluir.php?encid=$encid'>Excluir enquete</a></td></tr>";
}
echo "</table>";
?>
Agora você já pode escolher a enquete que deseja excluir, mas precisamos do código que realmente irá exclui-la, então abra o arquivo excluir.php e digite o seguinte código:
<?
$servidor="localhost";
$usuario="root";
$password="";
$base="enquete";
$SQLid = mysql_connect($servidor,$usuario,$password);
mysql_select_db($base,$SQLid);
$encid = $_GET['encid'];
$SQLQuery = "Delete from tblenc where encid='$encid'";
$res = mysql_query($SQLQuery);
echo "Enquete apagada com sucesso. Clique <a href='admin.php'>aqui</a> para voltar para a administração";
?>
Pronto, agora você já pode excluir uma enquete e é permitido apenas um voto por usuário por dia.
Nenhum comentário:
Postar um comentário