Jump to content


Photo

Enquete


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 FreezeBurn

FreezeBurn

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 19/12/2003, 19:50

Tem um bug nessa enquete feito pelo Éder Josué Chagas, quando você não coloca nenhuma opção ele registra o seu IP e não vota em nada, impedindo você de votar, mas não computa nenhuma opção, alguém pode me ajudar?
<link href="seabreeze1.css" rel="stylesheet" type="text/css">
<script language='JavaScript' type="text/javascript">
<!--
function PopUp2() { window.open('vote.php?action=results','Pager','width=180,height=370,resizable=yes,scrollbars=yes'); }
//-->
</script>
<?php
// ###########################  autor  ###################################
// ******************************************************** //
//                                                          //
//  Nome: Éder Josué Chagas                                 //
//  homepage: http://www.dcc.ufmg.br/~ejchagas              //
//  E-mail: ejchagas@dcc.ufmg.br                            //
//                                                          //
//          Script: Enquete                                 //
//                                                          //
//    Breve descrição: Enquete simples usando CheckBoxes,   //
// não utiliza banco de dados guardando todos os resultados //
// em arquivos, podendo ter até 10 opções por enquete.      //
//    Contém uma página para administração da enquete, para //
// ter acesso a essa página basta digitar o password 123456 //
//                                                          //
//    Para fazer o seu script funcionar basta  dar um       //
// chmod 766 nos arquivos que gravam os dados.              //
//                                                          //
// ******************************************************** //



// ###########################  head  ###################################
// head: função que configura a página e inicializa a tabela
//
function head()
{
	include('config.php');
	echo "<BODY bgcolor=\"$bgcolor\" link=\"#CCCC00\"";
	echo "vlink=\"#CCCC00\"";
	echo "alink=\"#CCCC00\">";
	echo "<table align=\"center\" width=\"150\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">
  <tr><td bgcolor=\"$tableborder\">
  <table width=\"145\" border=\"0\" 
  cellpadding=\"0\" cellspacing=\"\" align=\"center\">
  <tr><td bgcolor=\"$bgcolor\">";
} // head
// ###########################  foot  ###################################
// foot: função que finaliza a tabela
//
function foot () 
{
	echo "</td></tr></table></td></tr></table>";
} // foot

// ###########################  record  #################################
// record: grava o endereço ip no arquivo $ip_file
//
function record($REMOTE_ADDR) 
{
	include('config.php');

	// abre o arquivo para escrita após a última linha.
	$fp=fopen("$ip_file", "a+"); 
  
	// envia para o arquivo o ip e a hora
	fputs ($fp,$REMOTE_ADDR."][".time()."\n");
	fclose($fp);// fecha o arquivo
} // record

// ###########################  chech  #################################
// check: função que checa se o ip já está gravado
//
function check($REMOTE_ADDR) 
{
	include('config.php');
	global $valid;
	$ip=$REMOTE_ADDR;
	$data=file("$ip_file");
	$now=time();
	foreach ($data as $record) 
	{
  $subdata=explode("][",$record);
  if ($now < ($subdata[1]+3600*$timeout)) 
  {
  	if ($ip == $subdata[0]) 
  	{
    $valid=0;
    break;
  	}
  }
	}
}// check 

// ###########################  save  ##################################
// save: função que computa o voto
//
function save($opcao)
{	
	global $opcao;
	include('config.php');
	$data=file($datafile);
	$subdata=explode("][",$data[$opcao]);
	$subdata[2]+=1;
	$data[$opcao]=implode("][", $subdata);
	$data[$opcao]=$data[$opcao]."\n";
	$fp=fopen($datafile,"w+");
	$a=0;

	do {
  fputs($fp,$data[$a]);
  $a++;
	} while($a<count($data));

	fclose($fp);
}// fim save

// ###########################  form  ##################################
// form: função que cria a tabela para votação
//
function form($PHP_SELF)
{
	include('config.php');

	head(); //inicializa a tabela

	echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\"><form method=\"post\" action=\"vote.php\"><p align=\"center\">";
	$data=file($datafile);
	$question=$data[0];
	$nb_options=count($data)-1;
	echo "<b>$question</b></p>";

	for($nb=1;$nb <= $nb_options; $nb++)
	{
  $option=explode("][","$data[$nb]");
  echo "<input type=\"radio\" name=\"opcao\" value=\"$nb\"> ";
  echo "$option[0]<br>";
	}

	echo "<input type=\"hidden\" name=\"save\" value=\"yes\">";
	echo "<p align=\"center\"><input type=\"submit\" name=\"submit\"
  value=\"Vote\" class=\"formstyle2\"></font>";
	echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">
  <a href=\"javascript:PopUp2()\">
  <br>Check Results</font></p>"; 
	foot();// fecha a tabela
}// form

// ###########################  results  ##################################
// results: função que imprime os resultados 
//
function results()
{
	include('config.php');

	head();
	
	$data=file($datafile);
	$nb_answers=count($data);
	$votes=0;
	$a=1;

	do { // calcula o total de votos
  $subdata=explode("][",$data[$a]);
  $votes += $subdata[2];
  $a++;
	} while($a < $nb_answers);

	$a=1;
	$b="answerv";
	if($votes!=0)
  $v=100/$votes; //descobre o valor de 1 voto em %
	echo "<p><font size=\"$fontsize\" face=\"$font\"
  color=\"$textcolor\"><b>$data[0]<br><br>Results.
  </b><br><br>";

	do {
  $subdata=explode("][",$data[$a]);
  $av = $subdata[2] * $v; // calcula a porcentagem de cada opção
  echo "<font size=\"$fontsize\" face=\"$font\" color=\"$textcolor\">$subdata[0] ";
  echo " - $subdata[2] Vote(s)<br>";
  echo "<img src=\"$subdata[1]\" border=\"0\" width=\"$av\"
  	height=\"15\">";
  printf(" %01.1f", $av); 
  echo"%<br>";
  $a++;
	} while ($a < $nb_answers);

	echo "<br><font size=\"$fontsize\">
  Total Votes: $votes";
	echo "<br>";
	foot(); //fecha a tabela
}// results

// ###########################  execução  ################################
// execução da página
//
check($REMOTE_ADDR);

if ($valid=="0")// se já votou, mostra somente os resultados
{ 
	results();
}
elseif ($action=="results") // se clicar para ver os resultados
{ 
	results(); 
}
elseif ($save=="yes" && $valid!="0") // se votou e o ip ainda não foi gravado
{ 
	save($opcao); // computa o voto
	record($REMOTE_ADDR); // grava o ip
	results(); // mostra os resultados
}
[b]elseif ($action=="save" && empty($valid)) // se enviou o voto, sem
        // marcar uma opção
{ 
	results(); 
}[/b]
elseif ($action!="save" && $valid!="0") // se ainda não enviou o voto,
          // mas uma opção está marcada
{ 
	form($PHP_SELF); 
}

?>
Eu tinha té mudado o:
elseif ($action=="save" && empty($valid)) // se enviou o voto, sem
        // marcar uma opção
{ 
	results(); 
}
Que vinha como:
elseif ($action=="save" && [b]![/b]empty($valid)) // se enviou o voto, sem
        // marcar uma opção
{ 
	results(); 
}
A diferença era o "!". Só que não deu em nada... Alguma idéia galera?

Edição feita por: FreezeBurn, 19/12/2003, 19:51.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq