Mam coś takiego:
$fankieta = fopen($_SERVER['DOCUMENT_ROOT'].'/inc/ankieta.txt','r'); $idAnk = fread($fankieta,filesize($_SERVER['DOCUMENT_ROOT'].'/inc/ankieta.txt')); $ankieta = $baza->getRow("select * from sonda where id_sonda = $idA");
$ankietaContent = $baza->konwersja($ankieta['pytanie']);
$odpowiedzi = $baza->getRows("select * from sonda_odp where id_sonda = $idA");
if ($odpowiedzi){
$ankietaOdpowiedzi .= "<form action='index.php?id=ankieta&action=vote' method='post'><table class='ankieta'>";
foreach($odpowiedzi as $odpowiedz){
$ankietaOdpowiedzi .="<tr><td><input type='radio' value='{$odpowiedz['id_odp']}' name='odpowiedz' /></td><td>".$baza->konwersja($odpowiedz['odp'])."</td></tr>";
}
$ankietaOdpowiedzi .= "</table><p><input id='glosuj' type='submit' value='Głosuj' /></p></form><a href='index.php?id=ankieta'>Wyniki</a>";
}
switch ($site){
case 'ankieta':{
if ($_GET['action']=='vote'){
if ($baza->glosuj(intval($_POST['odpowiedz']),$idA)===true) $newsContent .="<p style='color:red;'>Głos został oddany</p>";
else
$newsContent .="<p style='color:red;'>Oddałeś już głos</p>";
}
$newsContent .="<br/><h1>Wyniki Sondy</h1><p>".$baza->konwersja($ankieta['pytanie'])."</p>";
if ($odpowiedzi){
$i=0;
foreach($odpowiedzi as $odpowiedz){
$suma += $odpowiedz['licznik'];
}
$newsContent.="<table class='ankieta'style='margin:0 auto;color:black;'>";
foreach($odpowiedzi as $odpowiedz){
if ($suma>0)
$odp['procent'] = $odpowiedz['licznik']/$suma*100;
else
$odp['procent'] = 0;
$odp['procent']*=2;
$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> ";
}
$newsContent.="</table>";
}
//}
break;
}
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:
$fankieta = fopen($_SERVER['DOCUMENT_ROOT'].'/inc/ankieta.txt','r'); $idAnk = fread($fankieta,filesize($_SERVER['DOCUMENT_ROOT'].'/inc/ankieta.txt')); $ankieta = $baza->getRow("select * from sonda where id_sonda = $idA");
$ankietaContent = $baza->konwersja($ankieta['pytanie']);
$odpowiedzi = $baza->getRows("select * from sonda_odp where id_sonda = $idA");
if ($odpowiedzi){
$ankietaOdpowiedzi .= "<form action='index.php?id=ankieta&action=vote' method='post'><table class='ankieta'>";
foreach($odpowiedzi as $odpowiedz){
$ankietaOdpowiedzi .="<tr><td><input type='radio' value='{$odpowiedz['id_odp']}' name='odpowiedz' /></td><td>".$baza->konwersja($odpowiedz['odp'])."</td></tr>";
}
$ankietaOdpowiedzi .= "</table><p><input id='glosuj' type='submit' value='Głosuj' /></p></form><a href='index.php?id=ankieta'>Wyniki</a>";
}
$voted=0;
$cookie_time = 24;
switch ($site){
case 'ankieta':{
if ($_GET['action']=='vote'){
if(isset($_COOKIE['voted'])){ $voted=$_COOKIE['voted'];
}
if ($voted==1) {
$newsContent .="<p style='color:red;'>Oddałeś już głos</p>";
}
else { if ($baza->glosuj(intval($_POST['odpowiedz']),$idA)===true) { $newsContent .="<p style='color:red;'>Głos został oddany</p>";
}
}
$newsContent .="<br/><h1>Wyniki Sondy</h1><p>".$baza->konwersja($ankieta['pytanie'])."</p>";
if ($odpowiedzi){
$i=0;
foreach($odpowiedzi as $odpowiedz){
$suma += $odpowiedz['licznik'];
}
$newsContent.="<table class='ankieta'style='margin:0 auto;color:black;'>";
foreach($odpowiedzi as $odpowiedz){
if ($suma>0)
$odp['procent'] = $odpowiedz['licznik']/$suma*100;
else
$odp['procent'] = 0;
$odp['procent']*=2;
$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> ";
}
$newsContent.="</table>";
}
//}
break;
}
Co robię nie tak ?