Mam coś takiego:

  1. $fankieta = fopen($_SERVER['DOCUMENT_ROOT'].'/inc/ankieta.txt','r');
  2. $idAnk = fread($fankieta,filesize($_SERVER['DOCUMENT_ROOT'].'/inc/ankieta.txt'));
  3. $idA = intval($idAnk);
  4. fclose($fankieta);
  5. $ankieta = $baza->getRow("select * from sonda where id_sonda = $idA");
  6.  
  7. $ankietaContent = $baza->konwersja($ankieta['pytanie']);
  8.  
  9. $odpowiedzi = $baza->getRows("select * from sonda_odp where id_sonda = $idA");
  10.  
  11. if ($odpowiedzi){
  12. $ankietaOdpowiedzi .= "<form action='index.php?id=ankieta&amp;action=vote' method='post'><table class='ankieta'>";
  13. foreach($odpowiedzi as $odpowiedz){
  14. $ankietaOdpowiedzi .="<tr><td><input type='radio' value='{$odpowiedz['id_odp']}' name='odpowiedz' /></td><td>".$baza->konwersja($odpowiedz['odp'])."</td></tr>";
  15. }
  16. $ankietaOdpowiedzi .= "</table><p><input id='glosuj' type='submit' value='Głosuj' /></p></form><a href='index.php?id=ankieta'>Wyniki</a>";
  17. }
  18.  
  19. switch ($site){
  20. case 'ankieta':{
  21. if ($_GET['action']=='vote'){
  22. if ($baza->glosuj(intval($_POST['odpowiedz']),$idA)===true)
  23. $newsContent .="<p style='color:red;'>Głos został oddany</p>";
  24. else
  25. $newsContent .="<p style='color:red;'>Oddałeś już głos</p>";
  26.  
  27.  
  28. }
  29. $newsContent .="<br/><h1>Wyniki Sondy</h1><p>".$baza->konwersja($ankieta['pytanie'])."</p>";
  30. if ($odpowiedzi){
  31. $i=0;
  32. foreach($odpowiedzi as $odpowiedz){
  33. $suma += $odpowiedz['licznik'];
  34. }
  35.  
  36. $newsContent.="<table class='ankieta'style='margin:0 auto;color:black;'>";
  37. foreach($odpowiedzi as $odpowiedz){
  38. if ($suma>0)
  39. $odp['procent'] = $odpowiedz['licznik']/$suma*100;
  40. else
  41. $odp['procent'] = 0;
  42.  
  43. $odp['procent']*=2;
  44. $newsContent .= "<tr><td>".$baza->konwersja($odpowiedz['odp'])."(".$odpowiedz['licznik'].")</td><td><div style='margin-left:10px;width:".$odp['procent']."px;height:14px;background:#089504'></div></td></tr> ";
  45. }
  46. $newsContent.="</table>";
  47. }
  48. //}
  49. break;
  50. }
  51.  




Problem polega na zablokowaniu prób kikukrotnego głosowania przez tą samą osobę za pomocą cookie.
Zrobiłem coś takiego, ale nie działa zbytnio:


  1. $fankieta = fopen($_SERVER['DOCUMENT_ROOT'].'/inc/ankieta.txt','r');
  2. $idAnk = fread($fankieta,filesize($_SERVER['DOCUMENT_ROOT'].'/inc/ankieta.txt'));
  3. $idA = intval($idAnk);
  4. fclose($fankieta);
  5. $ankieta = $baza->getRow("select * from sonda where id_sonda = $idA");
  6.  
  7. $ankietaContent = $baza->konwersja($ankieta['pytanie']);
  8.  
  9. $odpowiedzi = $baza->getRows("select * from sonda_odp where id_sonda = $idA");
  10.  
  11. if ($odpowiedzi){
  12. $ankietaOdpowiedzi .= "<form action='index.php?id=ankieta&amp;action=vote' method='post'><table class='ankieta'>";
  13. foreach($odpowiedzi as $odpowiedz){
  14. $ankietaOdpowiedzi .="<tr><td><input type='radio' value='{$odpowiedz['id_odp']}' name='odpowiedz' /></td><td>".$baza->konwersja($odpowiedz['odp'])."</td></tr>";
  15. }
  16. $ankietaOdpowiedzi .= "</table><p><input id='glosuj' type='submit' value='Głosuj' /></p></form><a href='index.php?id=ankieta'>Wyniki</a>";
  17. }
  18.  
  19. $voted=0;
  20. $cookie_time = 24;
  21.  
  22. switch ($site){
  23. case 'ankieta':{
  24. if ($_GET['action']=='vote'){
  25. if(isset($_COOKIE['voted'])){
  26. $voted=$_COOKIE['voted'];
  27. }
  28.  
  29.  
  30. if ($voted==1) {
  31. $newsContent .="<p style='color:red;'>Oddałeś już głos</p>";
  32. }
  33.  
  34. else { if ($baza->glosuj(intval($_POST['odpowiedz']),$idA)===true) {
  35. $newsContent .="<p style='color:red;'>Głos został oddany</p>";
  36. setcookie("voted", "1", time()+(3600*$cookie_time)); }
  37.  
  38. }
  39.  
  40. }
  41. $newsContent .="<br/><h1>Wyniki Sondy</h1><p>".$baza->konwersja($ankieta['pytanie'])."</p>";
  42. if ($odpowiedzi){
  43. $i=0;
  44. foreach($odpowiedzi as $odpowiedz){
  45. $suma += $odpowiedz['licznik'];
  46. }
  47.  
  48. $newsContent.="<table class='ankieta'style='margin:0 auto;color:black;'>";
  49. foreach($odpowiedzi as $odpowiedz){
  50. if ($suma>0)
  51. $odp['procent'] = $odpowiedz['licznik']/$suma*100;
  52. else
  53. $odp['procent'] = 0;
  54.  
  55. $odp['procent']*=2;
  56. $newsContent .= "<tr><td>".$baza->konwersja($odpowiedz['odp'])."(".$odpowiedz['licznik'].")</td><td><div style='margin-left:10px;width:".$odp['procent']."px;height:14px;background:#089504'></div></td></tr> ";
  57. }
  58. $newsContent.="</table>";
  59. }
  60. //}
  61. break;
  62. }


Co robię nie tak ?