|
Código Fuente Elecciones 2003
Proceso de votación:
require("votacionCadcc_lib.php");
sleep(3); #evito ataques de fuerza bruta en usernames o passwords
if(es_dcc($username)) {
if(es_votante($username)) {
if(verifica_password($username,$password)) {
if(!ya_voto($username,$password)) {
#voto correcto
agregar_voto($username, $voto, $textonulo, $comentario);
agregar_log("Usuario $username ha votado");
responder("ok");
}
else {
#ya voto
agregar_log("Usuario $username intenta votar nuevamente");
responder("repite");
}
}
else {
#mala la password
sleep(5); #evito ataques de fuerza bruta
agregar_log("Usuario $username equivoca password");
responder("password");
}
}
else {
#no es votante
agregar_log("Usuario $username es dcc pero no es votante");
responder("votante");
}
}
else {
#no es dcc
agregar_log("Usuario $username no es dcc");
responder("dcc");
}
Librería de funciones:
<?
#datos para votar
$file_dcc='/home/cadcc/2003/dcc.dat';
$file_votantes='/home/cadcc/2003/votantes.dat';
$file_passwords='/home/cadcc/2003/passwords.dat';
$file_logs='/home/cadcc/2003/logs.dat';
#registro votos
$file_votaron='/home/cadcc/2003/votaron.dat';
$file_comentarios='/home/cadcc/2003/comentarios.dat';
$file_nulos='/home/cadcc/2003/nulos.dat';
$file_votos='/home/cadcc/2003/votos.dat';
function buscar_en_archivo($archivo, $buscar){
$arch=file($archivo);
foreach ($arch as $linea) {
$linea=rtrim($linea);
if($buscar==$linea)
return TRUE;
}
return FALSE;
}
function es_dcc($username){
global $file_dcc;
return buscar_en_archivo($file_dcc,$username);
}
function es_votante($username){
global $file_votantes;
return buscar_en_archivo($file_votantes,$username);
}
function ya_voto($username){
global $file_votaron;
return buscar_en_archivo($file_votaron, $username);
}
function verifica_password($username,$password){
global $file_passwords;
$pass = file($file_passwords);
foreach ($pass as $linea) {
$linea=rtrim($linea);
list($user,$pass,$nombre)=explode(":",trim($linea));
if($username==$user)
return crypt($password,$pass) == $pass;
}
agregar_log("!!! No se encontro la password de $username");
return FALSE;
}
function agregar_voto($username, $voto, $textonulo, $comentario){
global $file_votaron,$file_votos,$file_nulos,$file_comentarios;
append_archivo($file_votaron, $username);
append_archivo($file_votos, $voto);
if($voto=='nulo')
append_archivo($file_nulos, $textonulo);
append_archivo($file_comentarios, $comentario);
}
function agregar_log($texto){
global $file_logs;
append_archivo($file_logs, date("D M j G:i:s T Y")." ". $texto);
}
function append_archivo($file, $texto){
system("echo ". escapeshellarg($texto). " >> " . $file);
}
function responder($codigo){
echo '<p align="center" class="title">Plebiscito Paro de Alumnos del DCC</p>
<p align="center">';
if($codigo=="ok")
echo "Su Voto ha sido recepcionado satisfactoriamente.<br>
Espere el recuento de votos parcial a las 18:00 hrs. y el recuento
final a las 23:00 hrs.<br>
Por seguridad, recomendamos cerrar el navegador.";
if($codigo=="repite")
echo "Según nuestros registros Ud. ya ha votado previamente.<br>
<a href='javascript:history.go(-1)'_gt;Volver_lt;/a_gt;_quot;;
if($codigo=="password")
echo "La password ingresada no corresponde a la que utiliza en el DCC.<br>
Por favor, inténtelo nuevamente.<br>
<a href='javascript:history.go(-1)'_gt;Volver_lt;/a_gt;_quot;;
if($codigo=="votante")
echo "Ud. no se encuentra en la lista de alumnos votantes para estas elecciones.<br>
Si tiene inscrito el código 059 o es de postgrado envíe un email a
cadcc@dcc.uchile.cl para solucionar su problema.<br>
<a href='javascript:history.go(-1)'_gt;Volver_lt;/a_gt;_quot;;
if($codigo=="dcc")
echo "Sólo los alumnos del DCC pueden votar en estas elecciones.<br>
Por favor, verifique que su username este bien escrito.<br>
<a href='javascript:history.go(-1)'_gt;Volver_lt;/a_gt;_quot;;
echo "</p>";
}
?>
Volver
|
|