cassianooliver Postado Fevereiro 14, 2008 Denunciar Share Postado Fevereiro 14, 2008 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); }?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 14, 2008 Denunciar Share Postado Fevereiro 14, 2008 Tem mais coisas ali pelo meio que também precisam ser alterada, por exemplo- $PHP_SELF- $REMOTE_ADDR Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Fevereiro 14, 2008 Autor Denunciar Share Postado Fevereiro 14, 2008 devo alterar o que exatamente, não entendi?$PHP_SELF -> $_SERVER['PHP_SELF']?agora o $REMOTE_ADDR nem conheço... ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Fevereiro 14, 2008 Denunciar Share Postado Fevereiro 14, 2008 Sim, $PHP_SELF vira $_SERVER['PHP_SELF'] .O $REMOTE_ADDR vira $_SERVER['REMOTE_ADDR'] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Fevereiro 14, 2008 Autor Denunciar Share Postado Fevereiro 14, 2008 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 hahhcurtindonabalada.com Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Fevereiro 14, 2008 Denunciar Share Postado Fevereiro 14, 2008 Aparentemente funcionou, votei e a enquete computou o voto. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Fevereiro 14, 2008 Autor Denunciar Share Postado Fevereiro 14, 2008 realmente, agora ta funcionando...brigadão Eserra e MLeandroJr Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
cassianooliver
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:
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.