Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Probleminha com enquete


cassianooliver

Pergunta

to tentando adpar uma enquete para que funcione sem register_globals, mas to errando em algo que não consigo identificar...

o problema que ta ocorrendo é o seguinte, só funciona 1 votação..

por ex:

votei aqui em casa, se acessarem o site em qualquer outro lugar, a enquete só mostra os resultados, não tem como mais votar...

só volta ao normal com register_globals = on...

o script:

<?php

// Aqui onde já identifiquei as variáveis...

$opcao = $_POST["opcao"];

$save = $_POST["save"];

$action = $_GET["action"];

########################### GRAVA O IP DE QUEM JÁ VOTOU #################################

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

}

// ########################### VERIFICA 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;

}

}

}

}

// ########################### 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);

}

// ########################### ENQUETE ##################################

function form($PHP_SELF)

{

include('config.php');

echo "<div class=enquete'>";

echo "<form method='post' action='vote.php'>";

$data=file($datafile);

$question=$data[0];

$nb_options=count($data)-1;

echo "<p class='pergunta'>$question</p>";

for($nb=1;$nb <= $nb_options; $nb++) {

$option=explode(][","$data[$nb]");

echo "<label class=resposta'><input type='radio' name='opcao' value='$nb' class='radio'>$option[0]</label>";

}

echo "<input type='hidden' name='save' value='yes'>";

echo "<p class='botoes'><input name='I7' type='image' id='votar' title='Votar na enquete' src='imagens/bot_votar.jpg'>";

echo "<font size='$fontsize' face='$font' color='$textcolor'>

<a href='vote.php?action=results' class='botoes'><img src='imagens/bot_parcial.jpg' title='Ver resultados' id='parcial'></font></p></a>";

echo "</div>";

}

// ########################### RESULTADOS ##################################

function results() {

include('config.php');

echo "<div class='enquete'>";

$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 class='pergunta'>$data[0]</p>";

do {

$subdata=explode(][",$data[$a]);

$av = $subdata[2] * $v; // calcula a porcentagem de cada opção

echo "<p>";

echo "<p class='opcoes'><strong>$subdata[0]</strong></p>";

//echo " - $subdata[2] votos<br>"; <- Caso queira colocar o nº de fotos, retire esse comentário

echo "<img src='barras/$subdata[1]' width='$av' height='10' class='barra'>";

echo "<span class='pct'>" . floor($av) . "%</span>";

echo"</p>";

$a++;

}

while ($a < $nb_answers);

echo "<p class='TotalVotos'>Total: $votes votos!</p>";

echo "</div>"; //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

}

elseif ($action=="save" && !empty($valid)) { // se enviou o voto, sem marcar uma opção

results();

}

elseif ($action!="save" && $valid!="0") {// se ainda não enviou o voto, mas uma opção está marcada

form($PHP_SELF);

}

?>

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

hum...

alterei aqui...

só que estou no trabalho e não posso testar em outro pc pra ver se ta funcionando certinho...

se puder olhar aí e me avisar...

o site taí, é só ver se a enquete ta permitindo votar, já votei aqui, se no site tiver dando pra votar, é porque ta funcionando hahh

curtindonabalada.com

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...