Create a verification page,
so that voters can see how they voted online before the election actually ends.
This commit is contained in:
		
							parent
							
								
									983e846593
								
							
						
					
					
						commit
						80c0efa2d9
					
				
					 3 changed files with 100 additions and 0 deletions
				
			
		|  | @ -8,6 +8,7 @@ page_SCRIPTS = \ | ||||||
|         results.php	\ |         results.php	\ | ||||||
|         votes.php	\ |         votes.php	\ | ||||||
| 	vote.php	\ | 	vote.php	\ | ||||||
|  | 	verify.php	\ | ||||||
| 	overview.html	\ | 	overview.html	\ | ||||||
| 	blt.php | 	blt.php | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -150,6 +150,24 @@ function elec_verify_email_tmp_token ($handle, $election_id, $email, $tmp_token) | ||||||
|   return (mysql_result ($result, 0, 0) == 1); |   return (mysql_result ($result, 0, 0) == 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function elec_verify_voted_token ($handle, $verify_token) { | ||||||
|  |   global $anon_tokens_table; | ||||||
|  | 
 | ||||||
|  |   if ($handle === FALSE) | ||||||
|  |     return FALSE; | ||||||
|  | 
 | ||||||
|  |   $escaped_verify_token = mysql_real_escape_string ($verify_token, $handle); | ||||||
|  | 
 | ||||||
|  |   $query = "SELECT id FROM " . $anon_tokens_table; | ||||||
|  |   $query .= " WHERE anon_token = '". $escaped_verify_token."'"; | ||||||
|  | 
 | ||||||
|  |   $result = mysql_query ($query, $handle); | ||||||
|  |   if (!$result) | ||||||
|  |     return 0; | ||||||
|  | 
 | ||||||
|  |   return mysql_result ($result, 0, 0); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function elec_choices_get ($handle, $election_id) { | function elec_choices_get ($handle, $election_id) { | ||||||
|   global $choices_table; |   global $choices_table; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										81
									
								
								vote/verify.wml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								vote/verify.wml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,81 @@ | ||||||
|  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||||||
|  | <html> | ||||||
|  |   <head> | ||||||
|  |     <link rel="stylesheet" type="text/css" href="vote.css" /> | ||||||
|  |     <title>The GNOME Foundation - Vote Verification</title> | ||||||
|  |     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | ||||||
|  |     <link rel="stylesheet" type="text/css" href="vote.css" /> | ||||||
|  |   </head> | ||||||
|  | 
 | ||||||
|  |   <body> | ||||||
|  | 
 | ||||||
|  | <?php | ||||||
|  | require_once ("include/election-sql.php"); | ||||||
|  | 
 | ||||||
|  | $error = ""; | ||||||
|  | 
 | ||||||
|  | $handle = elec_sql_open (); | ||||||
|  | if ($handle === FALSE) { | ||||||
|  |   $error .= "Can not open the database.<br />\n"; | ||||||
|  |   $step = 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | $verify_token = ""; | ||||||
|  | 
 | ||||||
|  | if (($_POST["verify_token"])) { | ||||||
|  |   $verify_token = $_POST["verify_token"]; | ||||||
|  | } | ||||||
|  | $anon_token_id = elec_verify_voted_token ($handle, $verify_token); | ||||||
|  | 
 | ||||||
|  | if ($verify_token && $anon_token_id > 0) { | ||||||
|  |   $error .= "The vote verification token provided does not appear in the votes database.  Please check that you entered it correctly.<br />\n"; | ||||||
|  | } | ||||||
|  | if (!$verify_token || $error) { | ||||||
|  |   echo "<h2>Verify your ballot</h2>\n"; | ||||||
|  |   echo "<p>Please enter your ballot verification token.</p>\n"; | ||||||
|  |   echo "<form action=\"".htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES)."\" method=\"post\""; | ||||||
|  |   echo "<div class=\"votedata\">\n"; | ||||||
|  |   echo "<p><label for=\"verify_token\">Verification Token: </label><input type=\"text\" name=\"verify_token\" value=\"".htmlspecialchars ($verify_token)."\" /></p>\n"; | ||||||
|  |   echo "</div>\n"; | ||||||
|  |   echo "  <input type=\"submit\" value=\"Submit\" />\n"; | ||||||
|  |   echo "</form>\n"; | ||||||
|  | } else { | ||||||
|  |     $votes = elec_get_votes_for_anon_token ($handle, $anon_token_id); | ||||||
|  |     echo "<tr class=\"".$class."\">\n"; | ||||||
|  |     echo "<td><span class=\"token\">".htmlspecialchars($verify_token)."</span></td>\n"; | ||||||
|  |     echo "<td>"; | ||||||
|  |     if ($votes === FALSE) { | ||||||
|  |       echo "Can not access votes<br />for this anonymous token."; | ||||||
|  |       $error .= "Can not get votes for anonymous token ".htmlspecialchars($anon_token["anon_token"])."<br />\n"; | ||||||
|  |     } else if (count ($votes) == 0) { | ||||||
|  |       echo "This voter chose to vote for<br />none of the possible choices."; | ||||||
|  |     } else { | ||||||
|  |       echo "<ol>"; | ||||||
|  |       foreach ($votes as $vote) { | ||||||
|  |         if (array_key_exists ($vote["choice_id"], $choices_name)) | ||||||
|  |           echo "<li><em>".htmlspecialchars($votes["preference"])." ".htmlspecialchars($choices_name[$vote["choice_id"]])."</em></li>\n"; | ||||||
|  |         else { | ||||||
|  |           echo "<li><em>Unknown value (".htmlspecialchars($vote["choice_id"]).")</em></li>\n"; | ||||||
|  |           $error .= "There was an unkown vote for anonymous token ".htmlspecialchars($anon_token["anon_token"]).": ".htmlspecialchars($vote["choice_id"])."<br />\n"; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       echo "</ol>"; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     echo "</td>\n"; | ||||||
|  | 
 | ||||||
|  |     echo "</tr>\n"; | ||||||
|  |   echo "</table>\n"; | ||||||
|  | } | ||||||
|  | global $committee_name; | ||||||
|  | global $committee_email; | ||||||
|  | 
 | ||||||
|  | if (isset ($error) && $error != "") { | ||||||
|  |   echo "<div class=\"error\">".$error."</div>\n";; | ||||||
|  |   echo "<p>If you don't understand the error, you should probably contact the $committee_name, which can be reached at <a href=\"mailto:$committee_email\">$committee_email</a>.</p>\n"; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if (isset ($handle)) | ||||||
|  |   elec_sql_close ($handle); | ||||||
|  | 
 | ||||||
|  | ?> | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn