webForumDet fria alternativet

cookie begränsad poll

0 svar · 147 visningar · startad av silfver

silfverMedlem sedan apr. 200312 679 inlägg
#1

Hejsan!
Jag hoppas att ni skulle kunna hjälpa mig med en sak.
Jag vill inte att besökarna ska kunna rösta hur mycket som helst, utan att det ska vara tidsbegränsat med cookies (eller ip om cookie inte går). Här nedan är "min" pollkod.

<?php
$RESULT_FILE_NAME = "poll_data.txt";
// En: Absolute path and name to file contain poll data.
// Fr: Chemin absolu (complet) et Nom du fichier contenant les donne.

$QUESTION = "Gillar du Silfver?";
// En: Question Text.
// Fr: Texte de la question.
$ANSWER = array("Älskar han!", "Lätt!", "Lite", "Nej..", "USCH!");
// En: All answer.
// Fr: Reponses possibles

$IMG_DIR_URL = "./vote";
// En: URL Directory of poll graphs.
// Fr: URL du repertoire des images.

$REVOTE_TIME = 3600;
// En: Time (second) after people can revote, use cookies.
// Fr: Temps en second apres lequel une personne peut revoter.

// End Necessary Variables section
/******************************************************************************/

if (! $vote && ! $result) {
echo "<FORM METHOD=\"POST\">\n";
echo "<TABLE WIDTH=100% BORDER=0><TR><TD><TABLE WIDTH=\"100%\" BORDER=0>\n";
echo "<TR align=\"left\"><TH>$QUESTION</TH></TR>\n";
while (list($key, $val) = each($ANSWER)) {
echo "<TR><TD align=\"left\"><INPUT TYPE=\"radio\" NAME=\"answer\" VALUE=\"$key\"> $val</TD></TR>\n";
}
echo "<TR><TD align=\"left\"><INPUT TYPE=\"Submit\" class=\"knapp\" NAME=\"vote\" VALUE=\" Rösta. \"></TD></TR>\n";
echo "<TR><TD align=\"left\"><INPUT TYPE=\"Submit\" class=\"knapp\" NAME=\"result\" VALUE=\" Se reslutat. \"></TD></TR>\n";
echo "</TABLE></TD></TR></TABLE></FORM>";
} else {

$file_array = file($RESULT_FILE_NAME); // or error("Can not open \\$RESULT_FILE_NAME");

// En: Save result
// Fr: Enregistre le resultat
if ($answer \< count($ANSWER) && $vote) {
	if (count($file_array) \< count($ANSWER))  {
		$file_array = array("0\\n", "0\\n", "0\\n", "0\\n", "0\\n", "0\\n", "0\\n", "0\\n", "0\\n", "0\\n");
	}
	$old_answer = $file_array\[$answer\];
	$old_answer = preg_replace("/\\n\\r\*/", "", $old_answer);
	$file_array\[$answer\] = ($old_answer + 1)."\\n";

	$file = join('', $file_array);
	$fp = fopen("$RESULT_FILE_NAME", "w"); //or error("Can not write \\$RESULT_FILE_NAME");
	flock($fp, 1);
	fputs($fp, $file);                                                     
	flock($fp, 3);
	fclose($fp);
}

// En: Display result
// Fr: Affiche le resultat
while (list($key, $val) = each($file_array)) {
	$total += $val;

}

echo "<TABLE WIDTH=\"100%\" CELLSPACING=0 CELLPADDING=0 BORDER=0\">";
echo "<tr><th><p align=left>Svar:</p></th><th>Procent:</th><th>Röster:</th></tr>";

//jazn: nollställ räknaren
$totaltantal=0;

while (list($key, $val) = each($ANSWER)) {
$percent = $file_array[$key] * 100 / $total;

//jazn: lägg till delvärdet till totaltantal
$totaltantal += $file_array[$key];

  $percent_int = floor($percent); 
  $percent_float = number_format($percent, 1); 
  $tp += $percent_float; 
  echo "\<tr\>\<td\> $ANSWER\[$key\] \</td\>\<td\>\<img height=9 src=\\"$IMG_DIR_URL/vote_left.jpg\\"\>\<img height=9 width=\\"$percent_int\\" src=\\"$IMG_DIR_URL/vote_middle.jpg\\"\>\<img height=9 src=\\"$IMG_DIR_URL/vote_right.jpg\\"\> $percent_float % \</td\>\<td\>$file_array\[$key\]\</td\>\</tr\>"; 

}

//jazn: efter raderna är skrivna skriver du ut totalen
print( "<tr><td> </td><td><p align=left><br>Antal röster: <b>$totaltantal</b></p></td><td> </td></tr>");

echo "</TABLE><br>";
echo "</TABLE><br>";
}

?>

Finns det någon enkel lösning på det här?

mvh silfver

129 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)