Sistema Administrativo De Elecciones “SADE”

Anuncio
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELECTRICA
SISTEMA ADMINISTRATIVO DE ELECCIONES “SADE”
TESIS
QUE PARA OBTENER EL TÍTULO DE
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
PRESENTA:
PIÑONES GARCÍA JAIR IVÁN
Asesores:
Ing. Catalina Patiño Gallegos
Ing. Mancilla León Armando
M. en C. Genaro Zavala Mejía
Estados Unidos Mexicanos, Distrito Federal. 2011
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELECTRICA
UNIDAD PROFESIONAL "ADOLFO LÓPEZMATEOS"
TEMA DE TESIS
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
QUE PARA OBTENER EL TITULO DE
TESIS INDIVIDUAL Y EXAMEN ORAL
POR LA OPCIÓN DE TITULACIÓN
DEBERA(N) DESARROLLAR
C. JAIR IVAN PIÑONES GARCIA
"SISTEMA ADMINISTRATIVO DE ELECCIONES (SADE) "
DESARROLLAR UNA APLICACIÓN DISPONIBLE EN INTERNET MANEJADORA DE BASES DE DATOS
QUE ADMINISTRE UNA JORNADA ELECTORAL EL CUAL REALIZARÁ EL ESCRUTINIO DE FORMA
AUTOMÁTICA Y LOS RESULTADOS SE MUESTRAN EN TIEMPO REAL.
•
•
CREAR UN SISTEMA DE COMPUTO QUE FUNCIONE EN UNA INTRANET Y/O INTERNET
APLICAR UNA METODOLOGÍA DE DESARROLLO DE SISTEMAS DE CÓMPUTO CON BASE DE
DATOS.
MÉXICO D.F. A 12 DE OCTUBRE DE 2011.
ASESORES
ING. ARMAN1D4~/l\PllJ\\ICILLALEÓN
ING. CATALlN
M. EN C. DAVID VÁZQUEZ ÁLVAREZ
JEFE DEL DEPARTAMENTO ACADÉMICO DE
INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA
Sistema Administrativo De Elecciones “SADE”
DEDICATORIA
Hay tantas personas a las que quisiera agradecer pero el espacio es tan corto y es que las mejores
cosas de la vida muchas veces se van en corto. Hay veces que las palabras no me alcanzan para
expresar todos los sentimientos, mucho menos para decir cuan agradecido estoy con las grandes
personas que se cruzaron en mi camino y que además me ayudaron a cumplir con este objetivo:
terminar la carrera profesional.
Este trabajo de tesis se lo dedico en principio a mi familia porque siempre me ayudó a salir
adelante, a cumplir mis metas y todo ese apoyo que recibi de mis padres, de mis hermanos, de mi
abuelita y de mi tia se ve reflejado en este trabajo. Familia solo quiero decirles que todas esas
horas de estudio y desvelo, de enojos, lagrimas e inseguridad asi como de felicidad y ganas de
seguir adelante no son en vano, que estan en mi, en el profesionista que soy ahora.
Tambien se lo dedico a Victor, que es una gran persona y un gran Ingeniero. Vict, hay tantas cosas
que quisiera decirte y no tengo palabras para agradecerte el infinito apoyo que me diste, que en
las buenas y en las malas siempre estabas ahí y sigues aquí conmigo, con nosotros porque siempre
te lo he dicho (y Cesar no me dejará mentir) tú eres parte de la familia. Graacias tambien por
formarme como lo hiciste, por todo lo que me enseñaste y por que creo que soy una gran persona
gracias a ti.
Dedicado tambien a mis compañeros de especialidad, en especial a mis amigos: Daniel, Paco,
Karla, Rosario, Erick, So, Jorge y ¿Por qué no? a Jacob tambien. Amigos, quiero decirles que a pesar
de todas las diferencias, de todos los enfrentamientos, de toda la competencia, no se, los extraño
mucho. Espero que algún dia nos reencontremos y recordemos con gusto esos días de escuela.
Ademas no se les olvide que tenemos que enaltecer nuestra alma máter.
Finalmente a mis profesores, por todos los conocimientos que me otorgaron, porque me
enseñaron que no todo en la vida es la escuela, que las cosas en la industria son muy dificiles y por
los valores que en mi dejarón. Ing. Catalina Patiño, Ing. Armando Mancilla, Ing. Genaro Zavala, Ing.
Fernando Noya, Ing. Ignacio Díaz muchas gracias por todo lo que me enseñaron, por la paciencia
que, en especial a nuestro grupo tuvieron, por todas las horas que pasamos juntos como una
segunda familia y que espero que esto no sea un adios, si no un hasta luego.
Finalmente quiero compartir una frase mia que surgia las veces que estaba a punto de darme por
vencido…
¿Para que practicar si nadie es perfecto?... ¡¡¡Para ser MEJOR!!!
Jair Iván Piñones García
Jair Iván Piñones García
Página 3
Sistema Administrativo De Elecciones “SADE”
AGRADECIMIENTOS
A mi madre que me dio la vida y por todo el apoyo que me brindo aún cuando a veces no lo
merecía.
A mi padre que me enseñó a nunca decir “no puedo” y que es lo que me ha llevado a lograr mis
metas
A mis hermanos que, a pesar de las diferencias, nunca faltaron consejos para que siguiera
adelante.
A Víctor que llegó a mi vida en el momento preciso, porque formó el hombre que soy ahora y por
transmitirme tanto conocimiento y tantas experiencias para recorrer el sendero de la vida.
A mis profesores que me enseñaron que se necesita mucho más que los cálculos y la
programación para ser un buen Ingeniero, que los valores y los buenos sentimientos te hacen una
mejor persona.
A Pedro Abundes que me ayudó mucho con este trabajo en los momentos más críticos, cuando no
encontraba una solución.
A mis compañeros de especialidad de computación porque nos dimos cuenta que como individuos
somos fuertes pero como grupo somos invencibles.
Jair Iván Piñones García
Página 4
Sistema Administrativo De Elecciones “SADE”
1. INTRODUCCIÓN ..................................................................................................................... 7
1.1.
1.2.
1.3.
1.4.
1.5.
Objetivo General. ...................................................................................................................... 7
Objetivos Particulares. .............................................................................................................. 7
Problemática ............................................................................................................................. 7
Justificación............................................................................................................................... 8
Propuesta de Solución. ............................................................................................................. 9
2. ESTADO DEL ARTE ............................................................................................................. 10
2.1. El sistema electoral Actual en México. ................................................................................... 10
2.2. Elecciones Electrónicas ........................................................................................................... 12
2.2.1. Sistemas de Votación DRE de Red Pública ....................................................................... 12
2.2.2. Sistemas de Votación por Internet ................................................................................... 12
2.2.3. Problemas que se han presentado ................................................................................... 14
2.3. Democracia Digital (CIBERDEMOCRACIA) ............................................................................... 17
2.3.1 Desventajas .......................................................................................................................... 18
2.4. Sistemas Electrónicos Electorales en México. ........................................................................ 20
3. PLATAFORMA DE DESARROLLO ................................................................................... 21
3.1.
3.2.
3.3.
3.4.
Marco de trabajo en Adobe DreamWeaver CS5 .................................................................... 21
Lenguaje PHP .......................................................................................................................... 22
Hojas de estilos CSS ................................................................................................................ 23
WAMP ..................................................................................................................................... 24
4. IMPLEMENTACION DEL SISTEMA. ................................................................................ 25
4.1. Análisis .................................................................................................................................... 25
4.2. Diseño. .................................................................................................................................... 27
4.3. Desarrollo................................................................................................................................ 34
4.3.1. Construcción ..................................................................................................................... 34
5. DESCRIPCIÓN DEL SISTEMA SADE ............................................................................... 45
5.1. Objetivos. ................................................................................................................................ 45
5.1.1. Mapa de Sitio. .................................................................................................................. 45
5.2. Servicios que ofrece SADE. ..................................................................................................... 52
6. BASES DE DATOS ................................................................................................................ 53
6.1. Manejador de Bases de Datos. ............................................................................................... 53
6.2. Modelo entidad Relación. ....................................................................................................... 53
6.3. Diagrama Entidad Relación. .................................................................................................... 54
6.4. Diccionario de Datos. .............................................................................................................. 55
6.5. Consultas a la Base de datos. .................................................................................................. 58
6.5.1. Ejemplo de consulta a la base de datos. .......................................................................... 58
6.5.2. Consulta de inicio de sesión mediante comportamiento de servidor............................... 60
7. SEGURIDAD POR VPN. ...................................................................................................... 64
Jair Iván Piñones García
Página 5
Sistema Administrativo De Elecciones “SADE”
8. ANEXOS .................................................................................................................................. 68
8.1. Pantallas y código. .................................................................................................................. 68
8.1.1. Código de la hoja de estilos. ............................................................................................. 68
8.1.2. INICIO (INDEX) .................................................................................................................. 70
8.1.3. TIPO DE USUARIO ............................................................................................................. 73
8.1.4. ELECCIONES ACTIVAS. ...................................................................................................... 77
8.1.5. VOTACIONES..................................................................................................................... 82
8.1.6. VOTO REALIZADO ............................................................................................................. 90
8.1.7. VOTO REGISTRADO. ......................................................................................................... 94
8.1.8. MENU ADMINISTRADORES. ............................................................................................. 98
8.1.9. INGRESAR CANDIDATO................................................................................................... 102
8.1.10. CONSULTAS DE ESTADOS. ............................................................................................ 114
8.1.11. JORNADA ELECTORAL................................................................................................... 119
8.1.12. RESULTADOS. ............................................................................................................... 126
9. Referencias ........................................................................................................................129
Jair Iván Piñones García
Página 6
Sistema Administrativo De Elecciones “SADE”
1. INTRODUCCIÓN
1.1.
Objetivo General.
Desarrollar una aplicación disponible en Internet manejadora de bases de datos que administre
una jornada electoral el cual realizará el escrutinio de forma automática y los resultados se
muestren en tiempo real.
1.2.


1.3.
Objetivos Particulares.
Crear un sistema de cómputo que funcione en una Intranet y/o Internet.
Aplicar una metodología de desarrollo de sistemas de cómputo con bases de datos.
Problemática
En la actualidad, la elección de los representantes de cargos públicos de gobierno en México se
lleva a cabo mediante un proceso electoral en el cual los votantes sufragan por un candidato
perteneciente a un partido político.
El proceso electoral federal es organizado por el Instituto Federal Electoral (IFE) que es un
organismo autónomo organizado por un consejo ciudadano que no responde a los intereses de
ningún partido político.
La jornada electoral, es un periodo en el cual se realiza la parte más importante de todo el proceso
electoral, que es cuando la población elige a sus representantes en un tiempo determinado y se
cuentan los sufragios que se realizaron a lo largo de la jornada, se registran los resultados y se dan
a conocer mediante un sistema de resultados preliminares (PREP) los posibles resultados del
proceso electoral.
La problemática de este sistema es que todo se lleva a cabo de manera manual, tanto el registro
de los electores, de actas de resultados y hasta el conteo de sufragios. Por esta razón se necesitan
demasiados recursos humanos (21,500 funcionarios de casilla aproximadamente) para la
organización de una jornada electoral en las diferentes localidades que integran nuestro país. Ante
esta situación siempre puede existir el error humano ya sea en el conteo o en el registro de los
resultados en la documentación otorgada por el IFE.
Además de estos recursos humanos, también se requieren recursos Materiales como papel para
expedir las boletas electorales y las actas para la publicación de resultados, plumones, crayones,
tinta, urnas, mamparas, mesas para los funcionarios de casilla, mesas de mamparas y lista
nominal.
Jair Iván Piñones García
Página 7
Sistema Administrativo De Elecciones “SADE”
Para realizar esta jornada electoral se requieren recursos financieros que aportamos todos los
mexicanos. Según la Fundación Internacional para Sistemas Electorales México es el país donde
más caro nos cuesta cada voto: 17.24 dólares por votante. Este cálculo se basa en la suma del total
de recursos públicos destinados a todos los partidos políticos, dividido por el número de votantes.
Siendo México el país con el proceso electoral más caro de Latinoamérica.
Figura 1
Grafica de los costos para el proceso electoral por país de América Latina.
1.4.
Justificación
Surge de la necesidad de crear un sistema electoral en México el cual administre la jornada
electoral de una manera automática y en tiempo real. Para realizar una jornada electoral, se
necesitan muchos recursos, tanto materiales como humanos y por lo tanto financieros que se
podrían ahorrar con el uso de este sistema electoral digital.
El sistema electoral mexicano, carece de seguridad y es fácil de manipular y tiende mucho a
errores humanos ya que el escrutinio de los votos se lleva a cabo de manera manual y la hoja para
el cómputo de los resultados preliminares se llena a mano.
El Internet y las computadoras nos proporcionan todo lo necesario para llevar a cabo una jornada
electoral completa de manera exitosa con un sistema que administre dicha jornada y que además
se puedan consultar los resultados conforme los electores realicen su voto en las casillas,
proporcionando seguridad y confidencialidad al elector al hacer efectivo su voto.
Es urgente realizar un sistema electoral que reciba el sufragio y realice el escrutinio de estos y a su
vez, conforme avance la jornada, muestre los resultados de cualquier área que sea consultada,
qué sea administrado solo por las personas necesarias y utilizado por los electores de una manera
Jair Iván Piñones García
Página 8
Sistema Administrativo De Elecciones “SADE”
fácil e intuitiva y que mejor que desarrollarlo con un sistema de información como servicio WEB
disponible en Internet.
1.5.
Propuesta de Solución.
Una Reforma Electoral describe el proceso de introducir sistemas electorales más justos y
democráticos donde estos no existen o mejorar la efectividad y transparencia de los sistemas
existentes.
La propuesta es diseñar un sistema electoral que conectado a la base de datos del padrón
electoral, los votantes sufraguen por medio de una página de Internet que estará disponible en las
casillas electrónicas.
Este sistema realizará el escrutinio automáticamente y en tiempo real, lo que permitirá a todos los
ciudadanos consultar los resultados desde el primer instante en que se comiencen a realizar los
votos.
Con este sistema se ahorraría muchos recursos financieros y materiales, además de que se
salvarían muchos árboles porque no se necesitarían imprimir las boletas, ni las actas de escrutinio
y cómputo.
Jair Iván Piñones García
Página 9
Sistema Administrativo De Elecciones “SADE”
2. ESTADO DEL ARTE
2.1.
El sistema electoral Actual en México.
Una elección es un proceso de toma de decisiones en el cual los ciudadanos elegimos
democráticamente a un candidato de determinado partido político el cual actúa como nuestro
representante en el sistema gubernamental. A esto se le conoce como proceso electoral.
La forma de organización política del Estado mexicano es la de una república representativa,
democrática y federal, integrada por 31 estados y un Distrito Federal (ciudad de México), sede de
los poderes federales. En total se conforma el país por 32 entidades que a su vez y para poder
organizar las elecciones federales también se divide en circunscripciones (5), Distritos (300),
Municipios (2,444) y Secciones (64,938). Tiene como base el principio de división de competencias
entre los poderes Ejecutivo, Legislativo y Judicial como instancias diferenciadas de autoridad cuyas
atribuciones se encuentran jurídicamente reguladas y delimitadas en la constitución política de los
Estados Unidos Mexicanos.
Para el ejercicio del poder, el Ejecutivo tiene carácter unitario, el de la federación se deposita en el
presidente de la República y el de cada uno de los 31 estados en el gobernador y el del Distrito
Federal en el jefe de Gobierno. Todos ellos sirven un periodo de seis años y no pueden ser
reelegidos. El Poder Legislativo Federal se deposita en el Congreso de la Unión, integrado por una
Cámara de Diputados y una Cámara de Senadores. La Cámara de Diputados se conforma por un
total de 500 representantes, todos ellos electos para un periodo de tres años y sólo pueden ser
reelegidos después de un periodo intermedio. La Cámara de Senadores se integra por un total de
128 miembros, todos ellos electos para un periodo de seis años y, al igual que los diputados, sólo
pueden ser reelegidos después de un periodo intermedio. El Poder Judicial de la Federación se
deposita en la Suprema Corte de Justicia de la Nación, la cual se integra por 11 ministros
designados por el voto de las dos terceras partes de los miembros del senado, a propuesta del
presidente de la república, para servir un periodo de 15 años. El Poder Judicial de las 32 entidades
federativas se deposita en su respectivo Tribunal Superior de Justicia.
La Constitución reconoce que la vía electoral es la única jurídicamente válida y legítima para la
integración y renovación de los Poderes Ejecutivo y Legislativo de la Federación, así como también
de las entidades federativas y de los ayuntamientos.
El poder Ejecutivo tiene carácter unitario y se deposita en el Presidente de los Estados Unidos
Mexicanos. Es elegido por votación directa, sufragio universal y el principio de mayoría relativa
para servir un periodo de seis años.
El poder Legislativo, se deposita en el Congreso de la Unión integrado por la Cámara de Diputados
y la Cámara de Senadores. La Cámara de Diputados se integra por 500 representantes que se
renuevan cada 3 años. De estos 500 diputados, 300 son elegidos por el principio de mayoría
relativa equivalente al número de distritos electorales, en tanto que los otros 200 lo son por el
Jair Iván Piñones García
Página 10
Sistema Administrativo De Elecciones “SADE”
principio de representación Proporcional mediante el sistema de Listas Regionales votadas en 5
circunscripciones plurinominales (40 por circunscripción). La Cámara de Senadores se integra por
un total de 128 miembros. En cada una de las 32 entidades federativas se eligen tres senadores.
Para estos efectos, los partidos políticos deben registrar una lista con dos fórmulas de candidatos.
Dos de los escaños se asignan por el principio de mayoría relativa, es decir, le corresponden al
partido que haya obtenido el mayor número de votos, en tanto que el tercero se asigna por el
principio de primera minoría, esto es, al partido que haya obtenido la segunda mayor votación. Los
32 senadores restantes son elegidos por el principio de representación proporcional, mediante el
sistema de listas votadas en una sola circunscripción plurinominal nacional. Para su asignación, la
ley dispone que se utilice la fórmula de proporcionalidad pura (cociente natural y resto mayor).
Principio de Mayoría Relativa: El ganador es el que obtiene mayor número de votos.
Principio de Representación proporcional: Es reducir las disparidades entre el porcentaje de la
votación nacional obtenida por un partido y los escaños parlamentarios que le corresponden: por
ejemplo, si un partido grande gana 40% de los votos debería obtener aproximadamente el 40% de
los escaños y si un partido pequeño gana 10% de los votos debería también conquistar el 10% de
los escaños parlamentarios. Para esto se considera una lista de candidatos regional para conseguir
una mejor proporcionalidad.
Jair Iván Piñones García
Página 11
Sistema Administrativo De Elecciones “SADE”
2.2.
Elecciones Electrónicas
Es una expresión que comprende varios tipos de votación, que abarca tanto modos electrónicos
de emitir votos como medios electrónicos de contar los votos. Las tecnologías para el voto
electrónico pueden incluir tarjetas perforadas, sistemas de votación mediante escáneres ópticos y
casillas de votación especializados. También puede referirse a la transmisión de boletas y votos
por vía telefónica, redes de computación privadas o por la Internet.
Las tecnologías del voto electrónico pueden acelerar el conteo de los votos y proveer una mejor
accesibilidad para los votantes con algún tipo de discapacidad. Sin embargo existen controversias,
acerca de que el voto electrónico, puede facilitar el fraude electoral o la violación del secreto de
sufragio.
Los sistemas de votación electrónica para electorados han estado en uso desde 1960 cuando
empezaron a usarse las tarjetas perforadas. Los más recientes sistemas de escaneo óptico de
votos permiten que un ordenador compute marcas hechas por los votantes en boletas. En Brasil
los votantes usan en todas las elecciones máquinas de votar DRE que recogen y cuentan los votos
en una sola máquina, como también sucede en gran escala en la India, Venezuela y los Estados
Unidos.
También hay sistemas híbridos que incluyen aparatos electrónicos de marcado de boletas
(normalmente sistemas de digitación sobre la pantalla similares a un DRE) u otras tecnologías de
asistencia para imprimir una boleta de papel verificable por el votante y el uso posterior de una
máquina distinta para la tabulación electrónica.
Asimismo, algunos países han implementado la votación por Internet, que es una modalidad del
voto a distancia. El voto por Internet ha cobrado popularidad y ha sido usado para elecciones
gubernativas y referéndums en el Reino Unido, Estonia y Suiza, así como también en elecciones
municipales en Canadá y elecciones partidarias primarias en los Estados Unidos y Francia.
2.2.1. Sistemas de Votación DRE de Red Pública
Estos sistemas usan boletas electrónicas y transmiten los datos de la votación desde su lugar de
emisión a otro lugar a través de la red pública. Esto puede ser tanto por Internet como por vía
telefónica. Los sistemas de votación DRE de red pública pueden utilizar tanto el conteo en el lugar
de emisión del voto como en la oficina central. El método de conteo en la oficina central tabula en
una locación central los votos emitidos en múltiples lugares de votación.
2.2.2. Sistemas de Votación por Internet
El voto por internet puede usar lugares remotos o puede utilizar los tradicionales con casillas
computarizadas conectadas a Internet. Algunas organizaciones usan Internet para elegir ejecutivos
o miembros de directivos así como para otros tipos de elecciones. La votación por Internet ha sido
utilizada privadamente en algunas naciones y públicamente en los Estados Unidos, el Reino Unido
Jair Iván Piñones García
Página 12
Sistema Administrativo De Elecciones “SADE”
(UK), Irlanda, Suiza y Estonia. En Suiza, los votantes son provistos de contraseñas, a través del
servicio postal, para acceder a la boleta.
La mayoría de los votantes en Estonia pueden emitir sus votos en elecciones locales y
parlamentarias, si desean hacerlo, a través de Internet, por cuanto la mayoría de los inscriptos en
los padrones tienen acceso a un sistema de voto electrónico; éste es el desarrollo más opulento en
países de la Unión Europea. Se hizo posible porque la mayoría de los estonios tienen una tarjeta
de identidad nacional equipada con un microprocesador legible por computadora que pueden
utilizar para acceder a la elección en red. Los votantes sólo necesitan una computadora, un lector
electrónico de tarjetas, su tarjeta de identidad y su clave, y así votar desde cualquier rincón del
mundo. Los votos electrónicos estonios sólo pueden emitirse durante los días de votación
anticipados. El día mismo de la elección la gente debe dirigirse a los puestos de votación y llenar
una boleta de papel.
Los sistemas de votación electrónica pueden usar boletas electrónicas para almacenar votos en
memorias de computación. Los sistemas que las usan con exclusividad son llamados sistemas de
votación DRE. Cuando se usan boletas electrónicas no se corre el riesgo de que se agote el
suministro de boletas. Adicionalmente, estas boletas electrónicas hacen innecesario imprimir
boletas de papel, que tiene un costo significativo. Cuando se administran elecciones en las cuales
las boletas se ofrecen en múltiples idiomas (en algunas áreas de los Estados Unidos, las elecciones
públicas deben contemplar esto según la Ley de Derechos Electorales Nacional de 1965), las
boletas electrónicas se pueden programar para proveer boletas en múltiples idiomas para una sola
máquina. La ventaja con relación a boletas en lenguajes diferentes luce como única del voto
electrónico. Por ejemplo, la situación demográfica del condado de King, Washington, les requiere
bajo la ley de elecciones federales de los Estados Unidos proveer acceso a boletas en idioma chino.
Con cualquier tipo de boleta de papel, el condado tiene que decidir cuántas boletas imprimir en
idioma chino, cuántas tener disponibles para cada lugar de votación, etc.
Las máquinas de tarjetas perforadas y las de escaneo óptico no son completamente accesibles
para los ciegos o discapacitados visuales y las máquinas de palancas pueden ser dificultosas para
votantes con movilidad y fortaleza limitadas. Las máquinas electrónicas pueden usar auriculares,
sorbedores y sopladores, pedales, manivelas y otros artificios de tecnología adaptativa para
proveer la accesibilidad necesaria.
Algunas organizaciones, como la Verified Voting Foundation han criticado la accesibilidad de las
máquinas de voto electrónico y proponen alternativas. Algunos votantes discapacitados
(incluyendo los discapacitados visuales) podrían usar una boleta táctil, sistema de boletas que usa
marcadores físicos para indicar a dónde se debería hacer una marca, para votar con una boleta de
papel secreta. Estas boletas pueden estar diseñadas idénticamente a aquéllas usadas por otros
votantes. Sin embargo, otros votantes discapacitados (incluyendo votantes con discapacidades de
destreza) podrían no ser hábiles para usar estas boletas.
Jair Iván Piñones García
Página 13
Sistema Administrativo De Elecciones “SADE”
2.2.3. Problemas que se han presentado
 Fairfax County, Virginia, 4 de noviembre de 2003. Las máquinas salieron del sistema,
saturaron los módems en los sistemas de votación cuando 953 máquinas de votar llamaron
simultáneamente para informar resultados, produciendo un incidente de denegación de
servicio en la elección. El 50% de los precintos no pudieron informar resultados hasta el día
siguiente. También, algunos votantes se quejaron de que cuando indicaban que querían
votar por determinado candidato, el indicador correspondiente a ese candidato se borraba
poco después. Si no se hubieran dado cuenta, su voto por ese candidato no hubiera sido
registrado; un número no conocido de votantes fueron afectados por esto.
 El sistema de votación Premier Election Solutions (antes Diebold Election Systems) TSx
descalificó a muchos votantes en los condados de Alameda y San Diego durante la elección
presidencial primaria del 2 de marzo de 2004, a causa de tarjetas de votación cuyos códigos
no funcionaban. El 30 de abril el secretario de estado Kevin Shelley retiró la certificación de
todas las máquinas de votación de pantallas de contacto y recomendó la incriminación penal
de Diebold Election Systems. El Fiscal General de California decidió en contra de la
incriminación penal, pero a continuación se sumó una demanda legal contra Diebold por
reclamos fraudulentos hechos a oficiales de la elección. Diebold arregló esa demanda legal
pagando $2.6 millones. El 17 de febrero de 2006 el Secretario de Estado de California Bruce
McPherson luego certificó nuevamente a la máquina de Diebold Election Systems DRE y al
Sistema de Votación por Escaneo Óptico.
 En el condado de Napa, California, el 2 de marzo de 2004, un escáner de sensor de marcas
mal calibrado no registró 6,692 votos de boletas a distancia.
 Luego de la elección presidencial de los Estados Unidos de 2004 hubo alegaciones de
irregularidades en los datos y fallas sistemáticas que podrían haber afectado el resultado
tanto de las elecciones presidenciales como locales. Ver: Voting machine problems in the
2004 United States presidential election
 El 30 de octubre de 2006 el ministro Holandés del Interior retiró la licencia de 1187
máquinas de votar del fabricante, cerca del 10% del número total a ser usado, porque el
Servicio de inteligencia Holandés demostró que se podía "escuchar" los votos desde una
distancia de hasta 40 metros usando el dispositivo "Van Eck phreaking". Las elecciones
Nacionales debían realizarse 24 días después de esta decisión. La decisión fue forzada por
una organización de base Holandesa llamada wijvertrouwenstemcomputersniet que se
traduce como "no confiamos en las computadoras de votación".
 Problemas en las elecciones generales de Estados Unidos de 2006:
o Durante las primeras horas de la elección en Miami, Hollywood y Fort Lauderdale,
Florida, en octubre de 2006 tres votos que intentaban ser registrados para
candidatos demócratas fueron mostrados como hechos para los Republicanos. Los
oficiales de la elección lo atribuyeron a errores de calibración en el procedimiento
táctil de la pantalla del sistema de votación.
o En Pennsylvania, un error de programación de computadoras forzó a algunos a
emitir boletas de votación de papel. En Indiana, 175 precintos también acudieron al
Jair Iván Piñones García
Página 14
Sistema Administrativo De Elecciones “SADE”
papel. Los condados en esos estados también extendieron los horarios de votación
para resolver las demoras.
o Un archivo de cerca de 1000 informes de incidentes de primera y segunda mano
hechos a una línea roja no partidaria que operaba el día de las elecciones parciales
del 7 de noviembre, así como informes de noticias.
 En agosto 1 de 2001 se documentaron instancias de tecnología defectuosa y temas de
seguridad en el Centro Brennan de la Escuela de Derecho de Nueva York. La Escuela de
Derecho de la Universidad de Nueva York emitió un informe con más de 60 ejemplos de
fallas de máquinas electrónicas de votación en 26 estados en 2004 y 2006. Los ejemplos
incluían boletas en lengua española que fueron emitidos por votantes pero no contados en
Sacramento en 2004.
 Revisión completa de los sistemas de votación del Secretario de Estado de Califormia:
o En mayo de 2007, la Secretaria de Estado de California Debra Bowen,
comprometió a expertos en seguridad de computadoras incluyendo a la
Universidad de California a efectuar evaluaciones del código fuente del sistema de
votación y dispuso de "equipos rojos" que operaban escenarios de "peor caso
posible" en el Día de la Elección con el fin de identificar puntos vulnerables,
adulteraciones o errores. El TTBR también incluyó una revisión completa de la
documentación de los fabricantes así como también una revisión de los elementos
de accesibilidad y requerimientos de lenguaje alternativos.
o Los resultados finales de los ensayos fueron emitidos en cuatro resoluciones
detalladas del Secretario de Estado el 3 de agosto de 2007 (Para Diebold Election
Systems, Hart InterCivic, Sequoia Voting Systems y Elections Systems and
Software, Inc.) y actualizados el 25 de octubre de 2007, para los sistemas de
votación de Diebold y Sequoia.
o El 3 de Agosto de 2007, Bowen retiró la certificación de máquinas que fueron
probadas en su revisión de arriba abajo incluyendo la máquina ES&S InkaVote, que
no estuvo incluida en la revisión porque la compañía la sometió a la prueba en
forma extemporánea. El informe emitido el 27 de julio de 2007 fue llevado a cabo
por el "equipo rojo" de expertos que procuraban detectar los niveles de
vulnerabilidad tecnológica. El 2 de agosto de 2007, otro informe fue emitido por
un equipo de revisión de código fuente para detectar fallas en el código fuente de
los sistemas de votación. Ambos informes encontraron que tres de los sistemas
probados quedaron muy atrás de los requerimientos mínimos especificados en los
Lineamientos Voluntarios de Sistemas de Votación de 2005 (VVSG, por sus siglas
en inglés). Algunos de los sitemas probados fueron recertificados
condicionalmente con la imposición de nuevos requerimientos estrictos de
seguridad. Las compañías en cuestión tenían plazo hasta las Elecciones Primarias
Presidenciales de California de febrero de 2008 para resolver sus problemas de
seguridad y asegurar que los resultados de la elección puedan ser auditados
minuciosamente.
Jair Iván Piñones García
Página 15
Sistema Administrativo De Elecciones “SADE”


El Sistema de Votación Premier Election Solutions, (antes Diebold Election Systems)
AccuVote-TSx fue estudiado por un grupo de científicos informáticos de la Universidad de
Princeton en 2006. Sus resultados mostraron que al sistema AccuVote-TSx se le podía
"instalar software de robo de software en menos de un minuto." Los científicos también
dijeron que las máquinas pueden transmitirse virus de computación las unas a las otras
"durante el desarrollo normal pre y post elección."
Problemas en Brasil: en noviembre de 2009, el investigador Sergio Freitas da Silva, uno de
los 32 especialistas convocados por el Tribunal Superior Electoral de Brasil para probar la
seguridad de las urnas electrónicas de ese país, logró romper el secreto del sufragio con
técnicas de lectura de radiofrecuencia y equipamiento muy económico. El experimento
logró vulnerar el secreto del voto, aunque no apuntó a la manipulación del conteo. El
sistema usado fueron las denominadas interferencias de Van Eck.
Jair Iván Piñones García
Página 16
Sistema Administrativo De Elecciones “SADE”
2.3.
Democracia Digital (CIBERDEMOCRACIA)
La democracia Digital se ha convertido en una de las alternativas existentes para revitalizar
nuestro sistema electoral. Esta alternativa debe ser analizada en elementos tecnológicos pues
debe tener un desarrollo e implementación suficientes para que permita la correcta utilización por
la ciudadanía.
El gran auge que tiene Internet como una nueva vía de comunicación, nos lleva a concebir a
nuestra propia sociedad desde una nueva perspectiva pues ha provocado cambios técnicos,
sociales y culturales muy importantes que nos encontramos ante una reinvención del entorno
(Espacio – Tiempo dominado por lo electrónico, digital, virtual) que la Sociedad Informática ha
denominado como Ciberespacio.
El ciberespacio se refiere a los objetos e identidades que existen dentro del Internet, así que
metafóricamente una página web se encuentra en el ciberespacio. Llegamos a este ciberespacio
gracias al desarrollo tecnológico de las últimas décadas que nos ayuda a adentrarnos en el mundo
digital y con una sociedad digitalizada eventos como los deportes, las elecciones y el resto de la
recepción de la información será recibida en tiempo real. La interactividad con el ciberespacio y los
sistemas de información en la web permite crear lazos estrechos entre los ciudadanos, así como
que estos establezcan sus propias vías de comunicación. De igual forma, permite seleccionar la
información, controlarla en su recepción, buscar nuevas fuentes, etc.
En su aplicación política las nuevas tecnologías posibilitan, en el ámbito de lo que se ha
denominado como ciberdemocracia, la votación electrónica de los representantes, la participación
y apoyo en las decisiones en temas de política. Sin embargo nos vamos a centrar en el aspecto de
la ciberdemocracia de la votación electrónica de los representantes.
Un primer paso hacia la ciberdemocracia es la interactividad En este sentido debemos destacar
cómo “Las comunicaciones interactivas ofrecen múltiples posibilidades y son los agentes sociales,
las administraciones y los representantes políticos quienes pueden dirigirlas hacia el incremento
del bienestar de los ciudadanos y el enriquecimiento de la práctica democrática” Un segundo paso
son las relaciones interactivas entre ciudadano – administración (E- Administradores), ante este
punto el ciudadano parece mostrarse muy interesado por las aplicaciones interactivas,
especialmente prestados a través de los sistemas de información web como puede ser el pago de
la tenencia vehicular, pago de infracciones, comunicación por medio de correo electrónico,
manejo de redes sociales, pago de impuestos y tasas.
Pero cierta parte de la población muestra rechazo hacia las nuevas tecnologías pues el
desconocimiento entre la población acerca de estos sistemas de información es todavía alto. Al
menos en relación a una utilización correcta, además de que las medidas de seguridad están
siendo aún perfeccionadas.
Sin embargo existen muchas ventajas que se derivan de estos servicios.
Jair Iván Piñones García
Página 17
Sistema Administrativo De Elecciones “SADE”





No hay limitaciones horarias (siempre On – Line)
Rapidez, sin formarse en una fila, ni problemas burocráticos.
Acceso Directo a la información.
Herramientas Interactivas.
Efectividad en bajos costos.
Un detalle importante acerca de esta ciberdemocracia es la seguridad tanto en el Sistema como en
la Red y no sólo para la realización de comercio por Internet o para las relaciones de
Administración, si no para las actividades participativas de los ciudadanos dentro del ámbito
político.
En las elecciones federales del 5 de julio de 2009 en algunas secciones del Distrito Federal se
instalaron casillas electrónicas dando a México su primera experiencia con esta nueva
ciberdemocracia. Dando la posibilidad a considerarse el voto por Internet y claro que luchando con
las dificultades de los Hackers, Crackers, suplantación de Identidad, etc. pues este tipo de prácticas
elimina numerosas barreras (costos electorales, lentitud en el escrutinio, caída del sistema, la
quema de urnas o la inserción de boletas en las urnas a favor de cierto candidato). De esta forma
se tiene una posibilidad para los ciudadanos de recuperar el concepto de Democracia, hoy en
cierto modo deformado por las actividades ilícitas descubiertas a lo largo de la historia.
2.3.1 Desventajas
Los posibles beneficios que se podrían obtener con la votación por Internet deberían contrastarse
con los riesgos que implica. Todas las elecciones sin importar los medios con que se conduzcan,
deberían cumplir íntegramente con los mismos principios de secrecía, anonimato, justicia,
precisión y transparencia.
Todos los sistemas de votación ya sea que usen lápiz y papel o cualquier otro método, deberían
garantizar que los electores se puedan identificar acertadamente y que los votos se escruten de
forma precisa. Todos los sistemas de votación que solamente sean electrónicos deberían
considerar la necesidad de salvaguardar la precisión del escrutinio de votos, a pesar de la falta de
representación física del voto. Además de estas preocupaciones, la votación por internet está
sujeta a otros riesgos por la inseguridad que tienen las máquinas de los usuarios y de la conexión
de red que se usa.
El sistema operativo más utilizado en México es Microsoft Windows, pues ofrece al usuario una
interfaz fácil de utilizar. Pero este sistema operativo también es de los más atacados por virus,
gusanos, “Caballos de Troya” o cualquier otro software denominado “Malware”. Se han realizado
esfuerzos para proteger el sistema operativo para evitar que aplicaciones maliciosas ejecuten
acciones indeseadas. Este tipo de aplicaciones pone en duda la confiabilidad del proceso de
elección con un sistema de votación electrónica por internet.
Jair Iván Piñones García
Página 18
Sistema Administrativo De Elecciones “SADE”
Además los sistemas de votación electrónica por internet no están exentos de ataques de Hackers
que puedan, por medio de fuerza bruta, acceder al sistema y modificar el resultado de la votación,
beneficiando a algún candidato de su preferencia o simplemente tirar el sistema.
Los sistemas de votación por internet enfrentan grandes dificultades, pues están fuera de control
de las autoridades electorales. Internet al ser una red pública, cualquier persona puede tener
acceso al sistema desde cualquier parte del mundo y generar un ataque desde su ubicación lo que
es un gran problema, pues las autoridades solo tienen jurisdicción en el territorio que les compete.
La mayor desventaja es que en dichos sistemas no existe una plena confianza del correcto
funcionamiento de un sistema electrónico. A menos que la arquitectura del Internet o de las
computadoras evolucione a un nivel superior de seguridad y control, esta confianza seguirá puesta
en duda.
Jair Iván Piñones García
Página 19
Sistema Administrativo De Elecciones “SADE”
2.4.
Sistemas Electrónicos Electorales en México.
En México, la informática vinculada a los procesos electorales se remonta al XXVII Congreso de los
Estados Unidos Mexicanos, cuando aprobó la Ley para la Elección de Poderes Federales, la cual fue
promulgada el día 1º de julio de 1918, por Venustiano Carranza, Presidente Constitucional,
entrando en vigor el mismo día de su publicación. Este ordenamiento reguló la renovación, por
elecciones ordinarias, de los Poderes Legislativo y Ejecutivo de la Unión, y precisó que dichas
elecciones se celebrarían en los años terminados en cero o cifra par, el primer domingo de julio,
(Constitución de 1917 –artículos 51 a 70- Sección I, Capítulo II, Título Tercero “De la elección e
instalación del Congreso").
Algo que es sorpresivamente cautivador, si se toma en cuenta el pensamiento de los legisladores
de esa época, es el contenido del artículo 58, que está como elegante “parche” en el telar de este
ordenamiento:
“ARTICULO 58. La votación podrá recogerse por medio de máquinas automáticas, siempre que
llenen los requisitos siguientes:
I. Que pueda colocarse en lugar visible el disco de color que sirva de distintivo al partido y los
nombres de los candidatos propuestos;
II. Que automáticamente marque el número total de votantes y los votos que cada candidato
obtenga;
III. Que tenga espacios libres donde los ciudadanos puedan escribir los nombres de los candidatos
cuando voten por alguno no registrado;
IV. Que pueda conservarse el secreto del voto;
V. Que el registro total señalado automáticamente sea visible e igual a las sumas parciales de los
votos obtenidos por cada candidato;
VI. Que los electores de la sección respectiva conozcan su manejo”.
Actualmente solo contamos con un Programa de Resultados Electorales Preliminares (PREP) y una
casilla electrónica que cuenta con una maquina contabilizadora de votos que no tiene conexión a
internet.
El PREP cuenta todos los votos de la mayoría de las casillas a partir de las actas de escrutinio que
se pegan a las urnas electorales. La página oficial del PREP publica los resultados que se van
obteniendo para que los ciudadanos estén enterados del resultado aproximado de las votaciones.
Sin embargo estos resultados carecen de validez oficial para determinar el ganador de los
comicios.
Jair Iván Piñones García
Página 20
Sistema Administrativo De Elecciones “SADE”
3. PLATAFORMA DE DESARROLLO
3.1.
Marco de trabajo en Adobe DreamWeaver CS5
Adobe Dreamweaver es una aplicación enfocada a la construcción y edición de sitios y aplicaciones
web basadas en estándares. Soporta diversos lenguajes de internet como HTML, PHP y además es
compatible para el manejo de hojas de estilo CSS. Es fácil de utilizar y es muy personalizable, lo
que hace que la mayoría de los diseñadores web lo elijan para el desarrollo de sus sistemas. La
compatibilidad se extiende al uso de imágenes, sonidos y animaciones flash, que en conjunto
hacen una página más interactiva con el usuario.
Se eligió esta plataforma de desarrollo pues cuenta con el manejo del lenguaje PHP, Java Script y
C# además del uso de plantillas con hojas de estilo (CSS) y uso de bases de datos ya sea con
MYSQL, ACCES, etc.
Dreamweaver realiza una conexión directa con el servidor web que nos proporciona el “Host” o
alojamiento de la página y además crea un servidor local para respaldar la página completa.
Cuando la página se sube al servidor y esta se encuentre disponible en Internet, Dreamweaver
permite realizar cambios en las páginas guardadas en el servidor y realiza los cambios necesarios
en tiempo real.
Dreamweaver tiene las herramientas necesarias para desarrollar un sistema dinámico y la facilidad
para manejar cambios en caso de que sea necesario un mantenimiento correctivo a la página web.
Hojas de estilos CSS.
Dreamweaver cuenta con herramientas para diseñar tu propia hoja de estilos y aplicar reglas de
estilo, como márgenes, títulos, subtítulos, tablas, estilo de fuente, colores, imágenes, división de la
página, encabezados, pies de página, etc. lo que le da a las páginas web una mejor presentación y
facilidad al manejar controles y ubicarlos en los lugares deseados.
Conexión con manejadores de bases de datos.
Dreamweaver tiene la capacidad de establecer una conexión directa con los manejadores de bases
de datos más comunes. Cuenta con una herramienta que genera el código de la consulta deseada
automáticamente solo con introducir las palabras clave de la consulta. Además puede realizar
diversos comportamientos de servidor como agregar a la página un sistema de identificación,
restringir el acceso a ciertas páginas si los usuarios no están identificados, crear varios tipos de
cuentas de usuario y otorgarles privilegios de acceso, así como actualizar, agregar y/o eliminar
registros de la base de datos a través de formularios. El código de todos estos comportamientos
de servidor también es generado automáticamente y puede ser modificado dependiendo de las
necesidades del sistema.
Jair Iván Piñones García
Página 21
Sistema Administrativo De Elecciones “SADE”
Modos de Trabajo.
En Dreamweaver se puede trabajar en modo de diseñardor, en modo de programador o ambos. Si
se trabaja en ambos modos se puede observar si se ingresa el código de algún control en la
ventana de código, se puede observar en la ventana de diseño el control que se generó con código
y por el contrario, si se inserta el control desde el menú insertar en la ventana de diseño,
automáticamente aparece el código en la ventana correspondiente. Trabajar en esta modalidad es
muy cómodo para observar los cambios realizados en ambas ventanas.
Requerimientos mínimos del sistema







3.2.
Procesador Intel® Pentium® 4 o AMD Athlon® de 64 bits.
Microsoft® Windows® XP con Service Pack 2 (se recomienda Service Pack 3); Windows
Vista® Home Premium, Business, Ultimate o Enterprise con Service Pack 1; o Windows 7.
512 MB de RAM.
1 GB de espacio disponible en el disco duro para la instalación; se necesita espacio libre
adicional durante la instalación (no se puede instalar en dispositivos de almacenamiento
extraíbles basados en flash).
Resolución de 1.280 × 800 con tarjeta de vídeo de 16 bits.
Unidad de DVD-ROM.
Conexión a Internet de banda ancha necesaria para los servicios en línea
Lenguaje PHP
Es un lenguaje de programación interpretado, diseñado para la creación de páginas web
dinámicas. PHP es acrónimo de PHP HYPERTEXT PRE – PROCESSOR. Puede ser desplegado en la
mayoría de los servidores web y en la mayoría de los Sistemas Operativos y Plataformas sin costo
alguno.
El gran parecido que posee PHP con los lenguajes más comunes de programación estructurada,
como C, permiten a la mayoría de los programadores crear aplicaciones complejas con una curva
de aprendizaje muy corta. También les permite involucrarse con aplicaciones de contenido
dinámico sin tener que aprender todo un nuevo grupo de funciones.
Cuando el cliente hace una petición al servidor para que le envíe una página web, el servidor
ejecuta el intérprete de PHP. Éste procesa el script solicitado que generará el contenido de manera
dinámica (por ejemplo obteniendo información de una base de datos). El resultado es enviado por
el intérprete al servidor, quien a su vez se lo envía al cliente. Mediante extensiones es también
posible la generación de archivos PDF, Flash, así como imágenes en diferentes formatos.
Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQL,
Postgres, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y SQLite.
Jair Iván Piñones García
Página 22
Sistema Administrativo De Elecciones “SADE”
PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos, tales
como UNIX (y de ese tipo, como Linux o Mac OS X) y Windows, y puede interactuar con los
servidores de web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI.
3.3.
Hojas de estilos CSS
CSS es acrónimo de CASCADING STYLE SHEETS, hojas de estilo en cascada. Es un lenguaje usado
para definir la presentación de un documento estructurado escrito en HTML.
Se usa CSS porque:




Separa la estructura del diseño de presentación de la página.
Control centralizado de la presentación del sitio.
Se utiliza como una plantilla para el diseño del sitio web, dando la oportunidad de cambiar
de plantilla cuando sea necesario.
Son estandarizadas, por lo que se puede cambiar fácilmente de hoja de estilo para
satisfacer el punto anterior.
CSS proporciona tres caminos diferentes para aplicar las reglas de estilo a una página Web:
1. Una hoja de estilo externa, es una hoja de estilo que está almacenada en un archivo
diferente al archivo donde se almacena el código HTML de la página Web. Esta es la
manera de programar más potente, porque separa completamente las reglas de formateo
para la página HTML de la estructura básica de la página.
2. Una hoja de estilo interna, que es una hoja de estilo que está incrustada dentro de un
documento HTML. (Va a la derecha dentro del elemento <head>). De esta manera se
obtiene el beneficio de separar la información del estilo, del código HTML propiamente
dicho. Se puede optar por copiar la hoja de estilo incrustada de una página a otra, (esta
posibilidad es difícil de ejecutar si se desea para guardar las copias sincronizadas). En
general, la única vez que se usa una hoja de estilo interna, es cuando se quiere
proporcionar alguna característica a una página Web en un simple fichero, por ejemplo, si
se está enviando algo a la página web.
3. Un estilo en línea (inline), que es un método para insertar el lenguaje de estilo de página,
directamente, dentro de una etiqueta HTML. Esta manera de proceder no es totalmente
adecuada. El incrustar la descripción del formateo dentro del documento de la página
Web, a nivel de código se convierte en una tarea larga, tediosa y poco elegante de resolver
el problema de la programación de la página. Este modo de trabajo se podría usar de
manera ocasional si se pretende aplicar un formateo con prisa, al vuelo. No es todo lo
claro o estructurado que debería ser, pero funciona. Este es el método recomendado para
maquetar correos electrónicos en HTML.
Jair Iván Piñones García
Página 23
Sistema Administrativo De Elecciones “SADE”
3.4.
WAMP
WAMP es el acrónimo usado para describir un sistema de infraestructura de internet que usa las
siguientes herramientas:
Windows, como sistema operativo;
Apache, como servidor web;
MySQL, como gestor de bases de datos;
PHP (generalmente), Perl, o Python, como lenguajes de programación.
El uso de un WAMP permite servir páginas html a internet, además de poder gestionar datos en
ellas, al mismo tiempo un WAMP, proporciona lenguajes de programación para desarrollar
aplicaciones web.
Jair Iván Piñones García
Página 24
Sistema Administrativo De Elecciones “SADE”
4. IMPLEMENTACION DEL SISTEMA.
Para la implementación del sistema se llevo a cabo la metodología ADDIE.
Analisis
Diseño
Evaluación
Desarrollo
Implementación
Figura 2.
Este modelo se eligió pues cumple con las etapas para la creación del prototipo.
4.1.
Análisis
Debido a todos los problemas presentados a lo largo de los capítulos 1 y 2 se llevo a cabo un
profundo análisis en el cual se detectaron ciertos inconvenientes con el sistema electoral actual en
México ya que es muy tardado realizar un proceso electoral y los recursos que se necesitan para
llevarla a cabo exitosamente, son excesivos. Además se presento un inconveniente inesperado
puesto que al solicitar la información acerca de los dispositivos electrónicos que se están
desarrollando como la urna electrónica y el funcionamiento del PREP, resultó que esa información
es confidencial y por lo tanto no es posible saber si el sistema SADE es compatible por lo menos
con la urna electrónica. Sin embargo, el sistema SADE se desarrolló para que sea compatible desde
los navegadores más comunes como MOZILLA FIREFOX, EXPLORER, OPERA, SAFARI, etc.
Por la situación anterior y como no se trabajó con alguien que necesitase el sistema electoral, no
es posible determinar los requerimientos ni los alcances del sistema, los tipos de usuarios y los
privilegios con los que cuentan. Esto también fue un inconveniente pues el sistema electoral
electrónico en México es necesario, desafortunadamente debido a lo delicado del tema de
elecciones en México y los problemas que han ocurrido con los sistemas electorales anteriores, las
instituciones encargadas de los proyectos sobre elecciones electrónicas cierran sus puertas para
evitar el mal uso de la información y futuros ataques a su sistema.
Jair Iván Piñones García
Página 25
Sistema Administrativo De Elecciones “SADE”
Se investigó sobre los proyectos de tesis en cuanto a elecciones electrónicas se refiere y existe
poca información sobre el tema, además de que los pocos proyectos que hay, se basan en
maquinas administradoras de la jornada y manejo de la información, pero nada sobre conexión a
Internet, toda la información es manejada de forma local. El inconveniente con este tipo de
maquinas es cuando se quieren analizar los resultados de todo el país o de ciertas áreas, pues la
recolección de los datos se tendría que hacer de forma manual, que es precisamente lo que hace
el PREP. Por las razones anteriores, es necesario preparar el sistema para que todo se haga de
manera automática y lo más rápido posible.
La manera más práctica de enlazar la decisión de los ciudadanos de todo un país es a través de
Internet y también es la más rápida. Sin embargo, Internet tiene la fama de ser muy insegura, por
lo que a seguridad se refiere, podemos dividir esta área del tema en dos:


Seguridad por Software.
Seguridad por Hardware.
Seguridad por Software.
SADE cuenta con los mecanismos de seguridad comunes en software. Estos mecanismos son
implementados para asegurar la confidencialidad del voto en el sistema. Los mecanismos son los
siguientes:
 Cifrado: Dreamweaver cuenta con algoritmos de cifrado para transportar los datos de un
formulario a la base de datos. SADE cuenta con estos algoritmos en todas las páginas
donde se requiera algún tipo de información.
 Control de Acceso: SADE tiene la capacidad de reconocer a los tipos de usuarios y limitar el
acceso a la información gracias a un sistema de autentificación de usuarios.
 Integridad de Datos: Gracias a los controles “Spry” aseguramos que los datos tengan el
formato solicitado por la base de datos para que estos no estén alterados.
A pesar de tener este tipo de seguridad, no es posible certificar que el sistema no sufra un ataque
externo y/o interno, puesto que todos estos mecanismos pueden ser evitados por personas que
conozcan la información necesaria para romper la seguridad del sistema. Por estas razones se
requiere también seguridad por Hardware.
Seguridad por Hardware.
Debido a que aun no se cuentan con algoritmos y métodos efectivos de alta seguridad en
Software, debemos implementar un sistema de seguridad con Hardware.
VPN (Virtual Private Network)
En español, Red Privada Virtual, es una topología de red que permite realizar una extensión de la
red local sobre una red pública no controlada como Internet.
Jair Iván Piñones García
Página 26
Sistema Administrativo De Elecciones “SADE”
Las VPN nos permiten comunicarnos desde un sitio remoto con otros equipos pertenecientes a
ellas utilizando como vinculo la infraestructura de Internet.
Ventajas:
 Estar en cualquier lugar del mundo para conectarse a cualquier recurso de la red local
como si se estuviera en ella.
 Integridad, confidencialidad y seguridad de datos.
 Reducen costos y son sencillas de usar.
 Su instalación es sencilla en cualquier PC.
 Los algoritmos de compresión optimizan el tráfico del usuario.
 Se evitan el alto costo de las actualizaciones y mantenimiento de PC's remotas.
 Se ahorran en costos de comunicaciones y en costes operacionales.
 Los trabajadores pueden acceder a los servicios de la compañía sin necesidad de llamadas.
 Una organización puede ofrecer servicios a sus socios mediante VPN´s, ya que éstas
permiten acceso controlado y brindan un canal seguro para compartir la información de
las organizaciones.
 En un extremo se encripta tráfico de salida, en otro extremo se decripta tráfico de
entrada.
 Software puede correr en un hardware dedicado o en un PC con Linux, NetWare o
Windows.
Desventajas:
 Si se es infiltrada por intrusos, cuando la red no tiene el nivel de seguridad que requiere,
las VPN resultan ser puertas traseras para los atacantes, quienes fácilmente se pueden
infiltrar a los dispositivos de los usuarios.
 Requiere software en ambos extremos de la comunicación.
 Requiere disponibilidad de internet.
A pesar de estas desventajas, aun así se tienen muchas más ventajas y es el método más seguro
para proteger al sistema.
4.2.
Diseño.
Dentro de esta etapa de diseño existe una metodología solo para la creación del sitio web. En
varias fases coincide con la metodología ADDIE. Se coloca aquí porque, para comenzar a diseñar
un sitio web es necesario seguir la siguiente metodología:
Jair Iván Piñones García
Página 27
Sistema Administrativo De Elecciones “SADE”
Fase 1 Análisis.
Fase 5 Operación
y Mantenimiento.
Fase 2 Diseño.
Fase 4
Implementación.
Análisis
Diseño
Construcción
Fase 3
Construcción.
• Conocimiento del medio ambiente.
• Análisis y Diagnostico del Sistema Actual.
• Propuesta generál de solución.
• Revisión de la propuesta de análisis.
• Diseño preeliminar.
• Diseño detallado.
• Construcción del programa y/o modelos.
• Desarrollo de procedimientos de usuario.
• Pruebas y aceptación del sistema.
• Preparación de la implementación.
• Verificar condiciones de la implementación.
Implementación
• Proceso de problemas reportados.
• Procesos de solicitudes de cambio.
• Modificaciones al sistema.
• Revisión y Evaluación del comportamiento.
• Identificacion de necesidades.
Operación y
Mantenimiento
Figura 3 Diagrama del diseño
Jair Iván Piñones García
Página 28
Sistema Administrativo De Elecciones “SADE”
La etapa de análisis se encuentra detallada en el capítulo 2 por lo que no se retomará en este
capítulo.
Debido al tiempo escaso para el proyecto y a que es solo un prototipo, la fase 4 de
implementación, es teórica, ya que aun no se implementa el sistema para trabajar en internet ni
con VPN pues se requieren equipos especiales para levantar esta red privada virtual. Por obvias
razones tampoco se llegó a la etapa de Operación y Mantenimiento. Sin embargo, se creó un
ambiente para simular la implementación y la operación con un sistema llamado WAMP que, en
general, prepara una PC para ser utilizada como servidor local e instala el lenguaje de
administración PHP y el manejador de Base de datos MySQL.
Diseño.
Por la falta de información, el diseño se desarrolló mediante la experiencia propia de ser
funcionario de casilla con el cargo de secretario en las elecciones para diputados federales del año
2008 y la poca información que el IFE proporciona en su página de Internet. Estos fueron los
principales medios por los cuales se definió el objetivo del sistema y como es que va a realizar el
escrutinio de los sufragios de manera automática y por regiones.
El diseño se inició por proponer un mapa de sitio y las tablas de la base de datos. El mapa de sitio
es el siguiente:
1) Usuarios Electores.
a. Inicio.
i. Realizar voto.
ii. Voto realizado.
iii. Voto ya registrado.
iv. Sin actividad.
2) Usuarios Administradores.
a. Inicio.
b. Realizar voto.
i. Voto realizado.
ii. Voto ya registrado.
c. Administrar jornada electoral.
i. Altas.
1. Candidatos.
2. Partidos.
ii. Bajas.
1. Candidatos
2. Partidos.
iii. Jornada electoral.
1. Activar una elección.
3) Resultados.
Jair Iván Piñones García
Página 29
Sistema Administrativo De Elecciones “SADE”
Descripción del sitio.
El sitio web se divide en tres principales secciones: La presentación de la página web, la lógica y la
conexión a la base de datos.
Página
web
Lógica
Bases de
datos
Figura 4. Division del sitio web
Propuesta de presentación de la página web.
Se propone un servicio web disponible en internet de acceso limitado por medio de un sistema de
autentificación a 2 tipos diferentes de usuarios: los electores comunes y los administradores. Los
electores comunes solo podrán acceder a las páginas del sistema que permiten hacer valido el
sufragio; los administradores además de tener acceso a la votación, también tienen privilegios
para gestionar la jornada electoral y las altas, bajas y consultas de la base de datos con respecto a
lo que las elecciones se refiere.
Jair Iván Piñones García
Página 30
Sistema Administrativo De Elecciones “SADE”
Diagrama de flujo del sitio web.
Figura 5. Diagrama de flujo del sitio web
Lógica.
Esta lógica hace referencia a los lenguajes que se va a utilizar y al comportamiento que se propone
para el servicio web.
Jair Iván Piñones García
Página 31
Sistema Administrativo De Elecciones “SADE”
El lenguaje principal es HTML utilizando el lenguaje de programación PHP, pues todo el diseño
físico es con lenguaje HTML y la lógica de programación es con PHP.
El objetivo del sistema es administrar una jornada electoral y que dicha jornada sea lo más
automatizada posible, es decir, que para los usuarios finales, el sistema sea muy fácil de utilizar y
muy intuitivo.
Para esto se requiere una automatización en todos los usuarios:
1. Filtro de usuario anónimo. Ningún usuario que no tenga una cuenta puede acceder al
sistema.
2. Filtro de electores comunes y administradores. Utilizando niveles de usuario para definir a
cual nivel pertenece cada uno. Solo existen dos: elector y administrador.
3. Cada usuario identificado tiene una sesión única y por lo tanto solo puede ver la
información correspondiente a su sesión.
4. La información puede variar para los usuarios, por lo tanto, esta debe aparecer
automáticamente a cada uno como le corresponda.
5. Aunque es un sistema automatizado, debe certificar que el voto de los usuarios sea libre y
secreto.
6. Ningún usuario, sea elector o sea administrador, puede hacer votos múltiples por el
mismo candidato.
7. Escrutinio de votos automático.
México, debido a su amplio territorio, se divide en 5 circunscripciones, que a su vez se dividen en
32 estados (Contando el Distrito Federal) que a su vez se subdividen en municipios, distritos y
localidades. Cuando el IFE hace un llamado a la población para elegir un representante, este puede
ser Nacional, estatal o local.
Para elegir al presidente de la republica, el llamado es Nacional y toda la población mexicana
puede hacer valido su voto. Gana el candidato que tenga el mayor número de votos. Para los
diputados, se eligen 500, 300 son por mayoría relativa (ganan los que consigan el mayor número
de votos) y cada uno representa a la población de un distrito en particular, los otros 200 son por
representación proporcional (dependiendo del número de votos que consiga cada partido es
conforme se distribuyen las plazas, si cierto partido consigue el 20% de los votos, dicho partido
consigue el 20% de las plazas correspondientes a su circunscripción y se dividen 40 plazas por
circunscripción) y ese grupo representan a una circunscripción en particular. Para el senado, se
eligen a 128 senadores, 2 por estado por mayoría relativa y los 64 restantes por representación
proporcional.
Para automatizar esto, se requiere que la información de cada diputado se indique en cada sesión
de usuario que quiera votar dependiendo de a que regiones corresponda y que candidato le
concierne, además de que el voto vaya dirigido al candidato de la región correcta.
Jair Iván Piñones García
Página 32
Sistema Administrativo De Elecciones “SADE”
Para los resultados, se deben hacer los cálculos necesarios, pues los ganadores no siempre son los
que consiguen el mayor número de votos, en el caso de representación proporcional, las plazas se
dividen dependiendo los votos conseguidos por el partido en su región, quien tenga el mayor
número de votos tiene mayor número de plazas pero no le corresponden todas.
Con estos diferentes tipos de escrutinio se debe llevar a cabo una lógica operacional para mostrar
los resultados correctos enlazando el candidato con su región, cargo público, partido al que
pertenece y el número de votos que obtuvo, pero también con los electores a los que su región les
corresponda dicho candidato.
Base de datos.
Para la base de datos se eligió el manejador MySQL pues tiene compatibilidad con PHP y la
mayoría de los servidores web que proporcionan alojamiento. Para continuar con el diseño se
propone el contenido de la base de datos para el control del sistema.
Propuesta de las tablas de la base de datos.
Electores.

















Nombre.
Domicilio.
Folio.
Año de registro.
Edad.
Sexo.
Clave de elector.
CURP.
Estado.
Municipio.
Estado.
Municipio.
Localidad.
Sección.
Emisión.
Vigencia.
ORC.
Jair Iván Piñones García
Candidatos.











Nombre.
Edad.
Sexo.
Clave elector.
Partido político.
Cargo público.
Estado.
Municipio.
Distrito.
Circunscripción.
Id del partido.
Partido Político.






Id partido político.
Nombre.
Estado.
Municipio.
Distrito.
Circunscripción.
Elección






Id elección.
Circunscripción.
Estado.
Municipio.
Distrito.
Tipo de cargo.
Tipo de cargo.
 Presidente de la
republica.
 Diputados
por
mayoría relativa.
 Diputados
por
representación
proporcional.
 Senadores
por
mayoría relativa.
 Senadores
por
representación
proporcional.
Página 33
Sistema Administrativo De Elecciones “SADE”
4.3.
Desarrollo.
Esta etapa de la metodología ADDIE coincide con la metodología seguida para el diseño que es la
Construcción.
4.3.1. Construcción
En base a la propuesta de diseño, se procede a construir el sitio web.
Se inició por elegir el esqueleto de la página, es decir, la estructura del sitio en su forma general.
Con la estructura de la página se crea la hoja de estilos CSS.
La estructura de la página se conforma de un contenedor principal central, una barra lateral
izquiérda, un encabezado y un pie de página.
Figura 6. Estructura de la página
Para establecer esta hoja de estilos, se crea un archivo nuevo en Dramweaver y se elije CSS, que
genera un documento en blanco. Dentro de este documento se crean las clases que contendrán
las reglas y divisiones de la página. Cada regla contiene ciertas características para determinados
elementos de la página. Se eligen los tipos de letra, color, tamaño y estilos para los títulos,
subtítulos, contenido, etc. y las divisiones de la página. Más información en el anexo.
Ya declaradas las clases, en código HTML, se pueden utilizar el nombre de estas clases como
etiquetas para hacer referencia a la división y/o el estilo que se desea utilizar.
En este caso la hoja de estilos creada se llama “estilosforms.css”.
Página de Inicio.
Cuando se crea una página nueva, se debe hacer referencia a la hoja de estilos que se está
utilizando, para poder ocupar los estilos de dicha hoja.
Jair Iván Piñones García
Página 34
Dentro del cuerpo de la página se crean las divisiones y se ocupan las clases por medio de
etiquetas que se crearon en la hoja de estilos.
La página de inicio queda estructurada con un contenedor principal donde se muestra el
contenido dinámico de la página, una barra lateral donde se muestra el inicio de sesión y un menú
de enlaces, el encabezado de la página que muestra el nombre del sistema y el pie de página.
Figura 7. Diseño de la página de Inicio
Teniendo la página de inicio ya con la estructura de la hoja de estilos, se puede trabajar sobre esta
como plantilla para las demás páginas que se vayan creando. Prácticamente el encabezado, el pie
de página y la barra lateral no sufren modificaciones en el contenido, todos los cambios se
realizaran en la división del contenido principal.
Así se diseñan todas las páginas propuestas en el mapa de sitio con las características que requiere
cada una de ellas.
Formularios.
Todas las páginas por lo menos cuentan con un formulario. Los formularios se utilizan para
insertar controles como cajas de texto, botones, etiquetas, etc. para trabajar con datos.
Dependiendo del tipo de página, es el formulario que requiere para su labor. En el caso de las
páginas de altas, se crea un formulario con las cajas de texto y etiquetas necesarias de los datos de
por ejemplo, un candidato o un partido político. Estos datos deben ser los que requiera la base de
datos en sus diferentes campos. Dentro de estos formularios existe también un botón que es el
que realiza la acción deseada.
Jair Iván Piñones García
Página 35
Sistema Administrativo De Elecciones “SADE”
Controles SPRY.
Los controles SPRY sirven para tener un control sobre los datos que se van a solicitar en una
página. Esto es muy útil cuando se trabaja con base de datos pues estos controles cuentan con
filtros que indican si los datos que se requieren son inválidos, impidiendo enviar la información a
otra ubicación. Hace una validación previa de los datos que ingresa un usuario para evitar que
algún tipo de información incorrecta llegue a la base de datos al ser enviada la información.
Los controles SPRY tienen varios estados pues son dinámicos, detectan los posibles errores que
puede cometer un usuario al ingresar información solicitada, pero también detectan que el dato
ingresado es correcto. Marca en color verde los datos correctos solicitados en el formulario y los
incorrectos los marca en color rojo.
Figura 8. Propiedades de los controles SPRY
Se configuran todos los elementos de formulario que soliciten información del usuario para
actualizar la base de datos o realizar algún tipo de modificación a esta.
Con la elaboración de los contenidos y formularios de todas las páginas, se procede a instalar el
servidor local y el manejador de la base de datos y a configurarlos en Dreamweaver para trabajar
en paralelo con ellos.
WAMP
WAMP nos va a proporcionar de los servicios necesarios para trabajar con el sitio web de forma
local. Al ejecutarse, crea un servidor apache con compatibilidad PHP y base de datos en MySQL,
todos los servicios deben estar habilitados.
Jair Iván Piñones García
Página 36
Indicadores.
Todos los servicios iniciados y ejecutándose.
Solo 2 servicios iniciados y ejecutándose.
Ningún servicio iniciado.
Figura 9. WAMP
Teniendo iniciados todos los servicios, entramos al servidor local (localhost) para gestionar las
bases de datos.
Jair Iván Piñones García
Página 37
Sistema Administrativo De Elecciones “SADE”
Figura 10. Ventana de configuracion de WAMP
Dentro del servidor local, en el apartado phpMyAdmin se crea la base de datos propuesta en el
diseño. Cada campo de la tabla se debe configurar dependiendo el dato que se va a ingresar para
evitar la inserción de datos inválidos, o datos basura dentro de la base de datos.
Configurando Dreamweaver para trabajar en un servidor.
Dreamweaver tiene la capacidad de trabajar con servidores remotos y locales. En este caso del
prototipo se va a trabajar con el servidor local WAMP.
Se crea un nuevo sitio para el proyecto de sitio web creado en Dreamweaver. Se establecen las
rutas de la ubicación del Servidor local.
Jair Iván Piñones García
Página 38
Figura 11. Ventana de configuracion de Servidor en DREAMWEAVER
Se configura el servidor local en el que se va a trabajar especificando las rutas.
Figura 12. Configurando el servidor
Finalmente se verifica la conectividad con el servidor local y se sincroniza para que todos los
documentos que estén dentro de ese proyecto de Dreamweaver estén disponibles también en el
servidor pues como antes se menciono, Dreamweaver tiene su propio servidor de respaldos para
trabajar en paralelo con el servidor y la computadora donde se esté diseñando el sistema.
Jair Iván Piñones García
Página 39
Sistema Administrativo De Elecciones “SADE”
Figura 13. Ventana de conexión con el servidor realizada en DREAMWEAVER
Establecer conexión con la base de datos.
Se Debe establecer una conexión con la base de datos, para ello se necesita dar de alta una nueva
conexión. Se solicitaran los datos necesarios para establecer la conexión, como la ubicación de la
base de datos, el nombre de usuario y la contraseña del manejador y el nombre de la base de
datos con la que va a establecer conexión.
Figura 14. Conexión con MySQL
Establecida esta conexión ya es posible crear todo tipo de consultas y modificaciones a la base de
datos desde el sitio web.
Consultas.
Teniendo establecida la conexión con la base de datos, se van a crear las consultas para todas las
páginas de altas.
Dreamweaver cuenta con una herramienta que facilita la creación de consultas y escribe el código
necesario en la página para la consulta.
Jair Iván Piñones García
Página 40
Se tienen 2 tipos de ventana para hacer una consulta: una simple y una avanzada. En la vista
simple solo se puede seleccionar el nombre de la consulta, la conexión con la base de datos, la
tabla a consultar, las columnas a recuperar el tipo de filtro y el acomodo de los datos en la
consulta.
Figura 15. Ventana de consultas
En la vista avanzada se pueden consultar y recuperar todos los valores deseados de una o varias
tablas, se pueden establecer condiciones para la recuperación de los datos, ordena la consulta
como se desee y es muy simple de programar.
Figura 16. Ventana de RecordSet
Introducir registros en la base de datos.
Jair Iván Piñones García
Página 41
Sistema Administrativo De Elecciones “SADE”
Para introducir un registro en la base de datos, se debe aplicar un comportamiento de servidor a la
las páginas de altas. El comportamiento de servidor en Dreamweaver permite interactuar con la
base de datos mediante la interfaz del sitio web. Se crean los comportamientos de servidor para
satisfacer ciertas necesidades en la creación del sitio. Para el caso de las páginas de altas, se crea
un comportamiento de servidor para insertar un registro a la base de datos. Al crear este
comportamiento, se debe configurar de donde se van a obtener los datos para la inserción del
registro. Como se crearon formularios para las altas, se configura el comportamiento de servidor
insertar registro con cada valor de la tabla en la que se van a insertar los nuevos datos. Debe haber
un control por cada campo que se quiere insertar a la base de datos y por lo menos un botón para
enviar el registro a su destino.
Figura 17. Actualización de Registro
Cambios a la propuesta.
En la propuesta de diseño no se tomó en cuenta una modificación o actualización en registros, por
lo tanto, se modifica el mapa de sitio y el diagrama de flujo para agregar las páginas de
actualización de registros.
Por seguridad para la base de datos se decide quitar el poder de las bajas a los administradores y
surge un nuevo usuario del sistema: el Webmaster.
Al llegar al punto de la creación de la página para dar de alta una jornada electoral, se presentan
diversos inconvenientes:
1. Base de datos incompleta: surge la necesidad de crear nuevas tablas con la información
necesaria para automatizar el contenido del sitio.
2. Actualización de las tablas propuestas: se agregan nuevos campos a las tablas propuestas
como identificadores, contraseñas y niveles de acceso.
Jair Iván Piñones García
Página 42
3. En la propuesta no se toma en cuenta un alta de un usuario elector. Se agrega la pagina de
electores.
4. Cambio en la estructura principal de la página: se sustituyen las páginas de altas y bajas
por candidatos, electores y partidos políticos: dentro de estas páginas se encuentra una
consulta general de todos los registros de la base de datos correspondientes a electores,
partidos o candidatos.
Para resolver estos inconvenientes se agregan a la base de datos las tablas correspondientes a las
circunscripciones, los estados, municipios y el tipo de elección. Se agregaron las tablas siguientes.
Circunscripciones.
 Circunscripción.
 Nombre.
 Estados integrantes.
Estados.
 Estado.
 Nombre.
 Circunscripción.
Municipios.
 Estado.
 Municipio.
 Nombre.
Tipo de elección
 Id de la elección.
 Descripción.
Estas tablas contienen toda la información de la división del país, con los nombres e
identificadores de los estados, municipios y el tipo de elección.
Para la actualización de las tablas existentes:
 Se modifica la tabla de candidatos: se agrega un id de candidato, se elimina la columna
partido político pues con el id de partido basta.
 Se modifica la tabla de electores: se agregan los campos de contraseña y acceso
administrador.
 Se eliminan las columnas de la tabla partido político eliminar estado, municipio, distrito y
circunscripción.
 Se modificó la tabla de tipo de cargo: se propuso un solo id de cargo y el nombre del
cargo.
 Se cambia la tabla de elecciones: se requieren los siguientes datos: clave id de la elección,
id del tipo de elección, id del cargo, fecha, hora de inicio, hora del fin y si la elección
registrada está activa.
Activar una elección.
Jair Iván Piñones García
Página 43
Sistema Administrativo De Elecciones “SADE”
Con los cambios realizados en la base de datos y estructura de la página, se diseña la página de
jornada electoral, que activa una elección, en la misma página esta la consulta de todas las
jornadas existentes en la base de datos.
Al crear el registro de la elección en la base de datos, automáticamente esta pasa a ser activa.
Para la automatización se creó una página de elecciones activas. Esta página mostrará todas las
elecciones que se tienen activas en la base de datos. Para ellos se crea una consulta a la base de
datos que recupere todos los registros de la tabla elecciones que estén activas con los campos de
id del cargo público y de la tabla de tipo de cargo recuperar el nombre de ese id de cargo. Se hace
un ciclo para recorrer la tabla completa y muestre solo los registros de las elecciones que se
tengan activas y se muestran los nombres de los cargos que están a votación en esa fecha.
Votación.
Al elegir un cargo por el cual votar, se llega a una página que muestra una tabla con los logotipos
de los partidos, los acrónimos de los partidos y el nombre de los candidatos de cada partido al que
representan. Al final un botón para enviar la información a la base de datos.
Esta página es sumamente importante pues aquí se deben mostrar los datos del candidato de la
región a la que le corresponde el usuario, para que el voto vaya dirigido a solamente a ese
candidato.
Para solucionar este inconveniente se creó una consulta a la base de datos por cada partido
político existente, que recupere solo el/los candidatos que pertenezcan a ese partido y al cargo
por el que se está votando, así se llegó a la conclusión de que por cada cargo debe haber una
página con consultas de cada partido participante en las elecciones.
Un inconveniente más fue que la página permitía realizar múltiples votos. Así que se decidió
cambiar la tabla de electores en la base de datos y agregar unas columnas bandera que indiquen
que el usuario ya voto o no ha votado dependiendo si la bandera esta o no levantada. Así que se
modifico la página de elecciones activas colocando una consulta que recuperara esta bandera y
verificara si esta levantada o no, en caso de no estar levantada permitir el acceso, de lo contrario
denegarlo y enviar a las páginas correspondientes.
Resultados y páginas de consultas.
Los resultados se muestran realizando una consulta a la base de datos que recupere los nombres
de los partidos, los candidatos de cierto cargo público y la región a la que pertenecen. Se grafican y
se muestran al público en general.
Se decide agregar una página de consultas que tampoco estaba considerada en la propuesta de
diseño para verificar las claves de los estados, municipios, tipo de cargo, candidatos y partidos. Por
esta razón una vez más cambia el diagrama de flujo y el mapa de sitio.
Jair Iván Piñones García
Página 44
5. DESCRIPCIÓN DEL SISTEMA SADE
5.1.
Objetivos.
El sistema SADE tiene como objetivo principal administrar una jornada electoral mediante el uso
de una interfaz grafica, práctica, simple y modular que permita a los usuarios efectuar su voto
certificando su libertad y confidencialidad mediante el uso de las tecnologías descritas en capítulos
anteriores para lograr una automatización en el proceso electoral que realice el escrutinio de estos
sufragios y muestre los resultados en tiempo real.
5.1.1. Mapa de Sitio.
Como se menciono anteriormente, el mapa de sitio propuesto cambio y el resultado fue el
siguiente:

Inicio.
o Usuario: elector común.
 Tipo de Usuario.
 Elecciones Activas.
o Presidente de la Republica.
o Diputados por mayoría relativa.
o Diputados por representación proporcional
o Senadores por mayoría relativa.
o Senadores por representación proporcional.
 Votar.
 Voto realizado.
 Voto registrado.
o Usuario: Administrador.
 Tipo de Usuario.
 Elecciones Activas.
o Presidente de la Republica.
o Diputados por mayoría relativa.
o Diputados por representación proporcional
o Senadores por mayoría relativa.
o Senadores por representación proporcional.
 Votar.
 Voto realizado.
 Voto registrado.
 Menú del administrador.
o Candidatos.
o Partidos Políticos.
o Electores.
o Consultas.
Jair Iván Piñones García
Página 45
Sistema Administrativo De Elecciones “SADE”
o
 Estados.
 Municipios.
 Circunscripciones.
 Partidos.
 Tipos de elecciones.
 Tipo de cargo público.
Jornada electoral.
Diagrama de flujo.
Figura 18. Diagrama de flujo del SADE
Jair Iván Piñones García
Página 46
Descripción de los casos.
Nombre.
Usuario.
Función.
Descripción.
Inicio o INDEX
Elector común, administrador
Página principal e inicio de sesión.
Muestra información general del sistema SADE, en la barra lateral se muestra un
inicio de sesión y debajo de este, enlaces varios.
Nombre.
Usuario.
Función.
Descripción.
Tipo de usuario.
Elector común, administrador
Mostrar los enlaces correspondientes a los niveles de usuario.
Filtrar enlaces según los diferentes tipos de usuarios. Dependiendo si el usuario es
administrador o elector, se muestran los enlaces para votación o para
administración.
Nombre.
Usuario.
Función.
Elecciones Activas
Elector común, administrador
Mostrar los enlaces hacia las elecciones activas y filtrar a los usuarios que ya hayan
votado.
Descripción. Mostrar automáticamente todos los enlaces hacia las páginas de votación del cargo
que estén activas. Dependiendo el cargo es a la pagina que se va a dirigir. Además
tiene la función de re – direccionar a los usuarios que ya hayan votado hacia una
página informativa de voto registrado.
Nombre.
Usuario.
Función.
Votación Presidente de la República
Elector común, administrador
Mostrar los logotipos y nombres de los partidos así como los nombres de los
candidatos a presidente. Manda el voto al candidato correspondiente.
Descripción. En una tabla dinámica, se muestran el logotipo del partido, el nombre de dicho
partido y el nombre de su candidato. Cuando el usuario haya elegido a su candidato
y al hacer clic en el botón de votar, se envía el voto al candidato elegido y se levanta
una bandera de que ese usuario ya realizó su voto.
Nombre.
Usuario.
Función.
Votación Diputados por mayoría relativa.
Elector común, administrador
Mostrar los logotipos y nombres de los partidos así como los nombres de los
candidatos a diputados. Manda el voto al candidato correspondiente.
Descripción. En una tabla dinámica, se muestran el logotipo del partido, el nombre de dicho
partido y el nombre de su candidato de todos los candidatos de esa elección con el
cargo de diputado. Cuando el usuario haya elegido a su candidato y al hacer clic en
el botón de votar, se envía el voto al candidato elegido y se levanta una bandera de
que ese usuario ya realizó su voto.
Jair Iván Piñones García
Página 47
Sistema Administrativo De Elecciones “SADE”
Nombre.
Usuario.
Función.
Votación Diputados por representación proporcional
Elector común, administrador
Mostrar los logotipos y nombres de los partidos así como los nombres de los
candidatos a diputados. Manda el voto al candidato correspondiente.
Descripción. En una tabla dinámica, se muestran el logotipo del partido, el nombre de dicho
partido y el nombre de su candidato de todos los candidatos de esa elección con el
cargo de diputado. Cuando el usuario haya elegido a su candidato y al hacer clic en
el botón de votar, se envía el voto al candidato elegido y se levanta una bandera de
que ese usuario ya realizó su voto.
Nombre.
Usuario.
Función.
Votación Senadores por mayoría relativa.
Elector común, administrador
Mostrar los logotipos y nombres de los partidos así como los nombres de los
candidatos a senadores. Manda el voto al candidato correspondiente.
Descripción. En una tabla dinámica, se muestran el logotipo del partido, el nombre de dicho
partido y el nombre de su candidato de todos los candidatos de esa elección con el
cargo de senador. Cuando el usuario haya elegido a su candidato y al hacer clic en el
botón de votar, se envía el voto al candidato elegido y se levanta una bandera de
que ese usuario ya realizó su voto.
Nombre.
Usuario.
Función.
Votación Senadores por representación proporcional.
Elector común, administrador.
Mostrar los logotipos y nombres de los partidos así como los nombres de los
candidatos a senadores. Manda el voto al candidato correspondiente.
Descripción. En una tabla dinámica, se muestran el logotipo del partido, el nombre de dicho
partido y el nombre de su candidato de todos los candidatos de esa elección con el
cargo de senador. Cuando el usuario haya elegido a su candidato y al hacer clic en el
botón de votar, se envía el voto al candidato elegido y se levanta una bandera de
que ese usuario ya realizó su voto.
Nombre.
Usuario.
Función.
Descripción.
Voto realizado
Elector común, administrador
Mostrar un mensaje al usuario de que su voto ya fue realizado.
Página informativa acerca de la realización exitosa del voto.
Nombre.
Usuario.
Función.
Descripción.
Voto registrado
Elector común, administrador
Mostrar un mensaje al usuario de que el voto ya fue registrado.
Página informativa informando al usuario de que su voto ya fue registrado. A esta
página los usuarios son re – direccionados cuando quieren votar de nuevo.
Jair Iván Piñones García
Página 48
Nombre.
Usuario.
Función.
Menú de Administrador.
Administrador
Mostrar los enlaces hacia las páginas de altas y actualizaciones, consultas y
activación de elecciones.
Descripción. Envía a los administradores a las páginas para dar de alta y/o actualizar los registros
de electores, partidos y candidatos. Envía a la página de consultas de claves y
finalmente direcciona a la página donde se activa una jornada electoral.
Nombre.
Usuario.
Función.
Administrar Candidatos.
Administrador
Ingresar un nuevo registro en la base de datos de un candidato nuevo, y/o la
actualización de los registros de candidatos existentes.
Descripción. Muestra una consulta general de los candidatos en una tabla dinámica. Además
cuenta con el formulario para ingresar los datos a actualizar o a ingresar.
Nombre.
Usuario.
Función.
Administrar Partidos Politicos.
Administrador
Ingresar un nuevo registro en la base de datos de un partido político nuevo, y/o la
actualización de los registros de partidos existentes.
Descripción. Muestra una consulta general de los partidos en una tabla dinámica. Además
cuenta con el formulario para ingresar los datos a actualizar o a ingresar.
Nombre.
Usuario.
Función.
Administrar Electores.
Administrador
Ingresar un nuevo registro en la base de datos de un elector nuevo, y/o la
actualización de los registros de candidatos existentes.
Descripción. Muestra una consulta general de los electores en una tabla dinámica. Además
cuenta con el formulario para ingresar los datos a actualizar o a ingresar.
Nombre.
Usuario.
Función.
Administrar Candidatos.
Administrador
Ingresar un nuevo registro en la base de datos de un candidato nuevo, y/o la
actualización de los registros de candidatos existentes.
Descripción. Muestra una consulta general de los candidatos en una tabla dinámica. Además
cuenta con el formulario para ingresar los datos a actualizar o a ingresar.
Nombre.
Usuario.
Función.
Descripción.
Consultas
Administrador
Mostrar
Muestra una consulta general de los candidatos en una tabla dinámica. Además
cuenta con el formulario para ingresar los datos a actualizar o a ingresar.
Jair Iván Piñones García
Página 49
Sistema Administrativo De Elecciones “SADE”
Nombre.
Usuario.
Función.
Descripción.
Estados.
Administrador
Consulta de las claves para los estados.
Consulta de las claves, nombre y circunscripción a la que pertenecen los estados
mediante una tabla dinámica.
Nombre.
Usuario.
Función.
Descripción.
Municipios
Administrador
Consulta de las claves de los municipios.
Consulta de las claves, nombre, estado y circunscripción a la que pertenecen los
municipios mediante una tabla dinámica.
Nombre.
Usuario.
Función.
Descripción.
Circunscripciones.
Administrador
Consulta de las claves para las circunscripciones.
Consulta de las claves, nombre y estados que pertenecen a esta circunscripción
mediante una tabla dinámica.
Nombre.
Usuario.
Función.
Descripción.
Partidos Políticos
Administrador
Consultar las claves de los partidos
Consulta de las claves, nombres, y acrónimos de los partidos mediante el uso de
una tabla dinámica.
Nombre.
Usuario.
Función.
Descripción.
Tipo de elección.
Administrador
Consultar las claves de los tipos de elección
Consulta de las claves y nombres los tipos de elección mediante el uso de una tabla
dinámica.
Nombre.
Usuario.
Función.
Descripción.
Partidos Políticos
Administrador
Consultar las claves de los partidos
Consulta de las claves, nombres, y acrónimos de los partidos mediante el uso de
una tabla dinámica.
Nombre.
Usuario.
Función.
Descripción.
Tipo de cargo público
Administrador
Consultar las claves de los tipos de cargo público
Consulta de las claves y nombres-de los tipos de cargo público mediante el uso de
una tabla dinámica.
Jair Iván Piñones García
Página 50
Nombre.
Usuario.
Función.
Descripción.
Jornada electoral
Administrador
Activar una jornada electoral
Realiza la activación de una jornada electoral activando una elección introduciendo
los datos de dicha jornada.
Tipos de Usuarios.
a) Elector común.
El elector común al iniciar sesión solo puede acceder al enlace de elecciones activas. Dentro de
esta página podrá elegir entre las elecciones que estén disponibles para votar. Al elegir uno de los
enlaces, será enviado a la planilla correspondiente para que haga valido su voto de manera libre y
secreta.
b) Administradores.
Los administradores también pueden juegan el rol de electores. Ellos pueden decidir si dirigirse a
su página de elecciones activas o a administrar la jornada electoral. Dentro de su rol como elector
cuenta con los mismos accesos y formas de hacer valido su voto que cualquier otro elector. En
esta área del sistema no cuenta con privilegios para realizar acciones diferentes a los demás
electores. Sin embargo el puede tener acceso a otras áreas que los electores comunes no. Como a
las consultas de claves, las altas y actualizaciones de candidatos, electores y partidos y sobre todo
a activar una elección
c) Usuarios no identificados.
Ellos solo pueden tener acceso a la página principal y observar los resultados desde el enlace de la
barra lateral. Pero no pueden acceder a ninguna de las otras páginas pues todas tienen el acceso
restringido para usuarios no registrados.
d) Webmaster.
Es el programador, diseñador y administrador principal de la página web. Tiene acceso a todo y
puede modificar todo el sistema si así se le requiere. Por el momento SADE en su etapa prototipo
depende mucho de un Webmaster pues es el que puede depurar errores y/o cambiar el código o
diseño tanto de la página como de la base de datos según las necesidades de los clientes.
Jair Iván Piñones García
Página 51
Sistema Administrativo De Elecciones “SADE”
5.2.
Servicios que ofrece SADE.
 E – voto.
Los electores registrados pueden hacer efectivo su voto mediante el SADE mediante una interfaz
grafica, fácil de utilizar certificando la libertad de elección y confidencialidad del sufragio. Cada
elector cuenta con un inicio de sesión único, gracias a este el SADE puede mostrar solo la
información correspondiente al usuario identificado. No permite el voto múltiple y realiza el
escrutinio automáticamente.
 Consulta de resultados.
SADE cuenta con una página de resultados que contiene una búsqueda para filtrar los resultados y
mostrar así la consulta los nombres de candidato, partido al que pertenece, estado, municipio,
distrito y el número total de votos que obtuvo en la elección.
Administración de la Jornada Electoral.
 Altas de candidatos, partidos, electores y actualización de los ya existentes.
SADE permite a los administradores dar de alta partidos, electores, y candidatos cada uno en su
correspondiente página y además permite actualizar los datos de los que ya existan en la base de
datos por si llegasen a cambiar en cualquier momento.
 Consultas.
Ya que SADE maneja diferentes claves, los administradores pueden consultar estas claves
identificadoras en cualquier momento. Existen claves para los estados, municipios, distritos,
circunscripciones, partidos políticos, candidatos, tipos de cargo, elecciones activas o inactivas y
tipos de elección.
 Activar elección.
SADE permite a los administradores activar una o varias elecciones durante una jornada electoral
determinando el tipo de cargo y el tipo de elección así como la fecha.
Jair Iván Piñones García
Página 52
6. BASES DE DATOS
6.1.
Manejador de Bases de Datos.
Una base de datos es una colección de datos organizados y estructurados, que siguen un
determinado modelo de información que indica los datos y la relación que existe entre ellos. Una
base de datos tiene que ser diseñada siguiendo un propósito específico, el diseño debe tener una
lógica coherente, los datos pueden ser compartidos mediante la interacción de usuarios con
aplicaciones, pero éstos deben conservar su integridad, y seguridad. Para evitar la redundancia, la
definición y descripción de los datos tiene que ser muy clara y única. Una base de datos esta
conformada por tablas, donde se almacenan un conjunto de datos, las tablas están formadas por
columnas y filas, en las columnas se almacena una parte de la información, acerca de un elemento
que se desea guardar en la tabla, las filas conforman los registros.
Características de una Base de Datos








Independencia física y lógica de los datos
Redundancia mínima
Integridad de los datos
Seguridad de acceso
Consultas complejas optimizadas
Respaldo y recuperación
Acceso a través de diversos lenguajes de programación
Acceso concurrente por parte de múltiples usuarios
Para el diseño de SADE se eligió MySQL como manejador de la base de datos, este se encuentra
dentro del sistema gestor de bases de datos WAMP que proporciona los servicios de un Servidor
web Apache, lenguaje PHP y bases de datos en MySQL.
6.2.
Modelo entidad Relación.
Una base de datos es una colección de datos organizados y estructurados, que siguen un
determinado modelo de información que indica los datos y la relación que existe entre ellos. Una
base de datos tiene que ser diseñada siguiendo un propósito específico, el diseño debe tener una
lógica coherente, los datos pueden ser compartidos mediante la interacción de usuarios con
aplicaciones, pero éstos deben conservar su integridad, y seguridad. Para evitar la redundancia, la
definición y descripción de los datos tiene que ser muy clara y única. Una base de datos esta
conformada por tablas, donde se almacenan un conjunto de datos, las tablas están formadas por
columnas y filas, en las columnas se almacena una parte de la información, acerca de un elemento
que se desea guardar en la tabla, las filas conforman los registros.
Características de una Base de Datos
Independencia física y lógica de los datos
Jair Iván Piñones García
Página 53
Sistema Administrativo De Elecciones “SADE”
Redundancia mínima
Integridad de los datos
Seguridad de acceso
Consultas complejas optimizadas
Respaldo y recuperación
Acceso a través de diversos lenguajes de programación
Acceso concurrente por parte de múltiples usuarios
6.3.
Diagrama Entidad Relación.
Figura 19. Diagrama de Entidad Relación
Jair Iván Piñones García
Página 54
6.4.
Diccionario de Datos.
Electores.
Jair Iván Piñones García
Página 55
Sistema Administrativo De Elecciones “SADE”
Candidatos.
Circunscripciones.
Elecciones.
Jair Iván Piñones García
Página 56
Estados.
Municipios.
Partido Político.
Tipo de cargo.
Tipo de elección
Jair Iván Piñones García
Página 57
Sistema Administrativo De Elecciones “SADE”
6.5.
Consultas a la Base de datos.
En capítulos anteriores se menciono mucho sobre las consultas realizadas a la base de datos para
tener acceso a la información. En este capítulo se indicara en qué forma se realizaron las consultas
y para que se utilizaron.
6.5.1. Ejemplo de consulta a la base de datos.
Para hacer una consulta en la base de datos en Dreamweaver, primero que nada debe existir una
conexión con la base de datos que se va a consultar. Teniendo establecida esta conexión,
ingresamos a la opción enlaces y consulta de registros o juego de registros. La ventana emergente
tiene 2 modalidades: simple y avanzada. En modo simple se elije el nombre de la consulta, la
conexión a utilizar, la tabla de donde extraerá los datos, que datos se van a seleccionar, si se
requiere algún tipo de filtro y el orden de aparición de la consulta.
Figure 20. Muestra la ventana de juego de registros en su modo simple.
En el modo avanzado se elije el nombre y la conexión a la base de datos a utilizar. Pero se debe
editar, es decir, escribir la consulta que se va a realizar, por ejemplo: SELECT * FROM electores
WHERE curp = colname. Esto indica que vamos a seleccionar todos los campos de la tabla
electores con la condición de que el campo curp sea igual a la variable de inicio de sesión. Por esta
razón las sesiones de los usuarios son únicas y por eso mismo se pueden realizar los filtros
necesarios para que la información llegue solo a los usuarios que les corresponda dicha
información.
Jair Iván Piñones García
Página 58
Figura. 21 Muestra la ventana de juego de registros en su modo avanzado.
Cada página cuenta con diferentes tipos de consultas para filtrar la información que se requiere
que llegue a un lugar en el sistema específicamente y que esta información solo llegue a los
usuarios que estén autorizados.
El código generado para esta consulta es el siguiente:
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue =
"")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue)
: mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
Jair Iván Piñones García
Página 59
Sistema Administrativo De Elecciones “SADE”
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_REelector = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_REelector = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_REelector = sprintf("SELECT * FROM electores WHERE curp
GetSQLValueString($colname_REelector, "text"));
$REelector = mysql_query($query_REelector, $coneccion1) or die(mysql_error());
$row_REelector = mysql_fetch_assoc($REelector);
$totalRows_REelector = mysql_num_rows($REelector);
?>
=
%s",
6.5.2. Consulta de inicio de sesión mediante comportamiento de servidor.
En este caso la consulta se hace mediante un comportamiento de servidor. Dreamweaver ayuda a
formar el código para la consulta mediante ventanas de requerimiento de datos. Para crear esta
consulta, necesitamos agregar un comportamiento de servidor nuevo y se elige la opción de
identificación de usuario (LOG IN USER). En la ventana emergente se eligen los campos del
formulario previamente hecho para indicar la donde el usuario escribirá su CURP y su contraseña,
la conexión a la base de datos que va a utilizar, la tabla de consulta, los campos referidos a su
CURP y su contraseña, el re – direccionamiento si la identificación fue exitosa o si falló y la
restricción del acceso basado en usuario, contraseña y nivel de acceso.
Jair Iván Piñones García
Página 60
Figura. 22. Creación de Inicio de sesión.
Existen diferentes tipos de comportamientos de servidor, entre ellos están:






Ingresar un registro nuevo a la base de datos.
Eliminar un registro.
Actualizar un registro.
Restringir el acceso a la página por nombre de usuario, contraseña y nivel de acceso.
Ingresar textos, cajas, tablas, botones, etc. dinámicos.
Ingresar controles para desplazarse a través de las consultas y tablas dinámicas.
El código generado para el sistema de identificación de usuario es el siguiente:
<?php require_once('Connections/coneccion1.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue =
"")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue)
: mysql_escape_string($theValue);
switch ($theType) {
case "text":
Jair Iván Piñones García
Página 61
Sistema Administrativo De Elecciones “SADE”
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['orc'])) {
$loginUsername=$_POST['orc'];
$password=$_POST['contrase'];
$MM_fldUserAuthorization = "accesoadmon";
$MM_redirectLoginSuccess = "/SADEPrueba/Electores/tipodeusuario.php";
$MM_redirectLoginFailed = "/SADEPrueba/datosincorrectos.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_coneccion1, $coneccion1);
$LoginRS__query=sprintf("SELECT curp, contrase, accesoadmon FROM electores WHERE curp=%s
AND contrase=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
$LoginRS = mysql_query($LoginRS__query, $coneccion1) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
Jair Iván Piñones García
Página 62
if ($loginFoundUser) {
$loginStrGroup = mysql_result($LoginRS,0,'accesoadmon');
if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
El código indica los controles, variables y la conexión y consulta a la base de datos que se van a
utilizar, también indica los caminos a dirigirse si el usuario ingresa mal su información o si el
acceso es permitido.
Jair Iván Piñones García
Página 63
Sistema Administrativo De Elecciones “SADE”
7. SEGURIDAD POR VPN.
Ya que aun no es posible certificar la confidencialidad, integridad y autentificación de los datos por
sistemas de seguridad vía software, se utiliza hardware cubrir estas necesidades que se tienen de
proteger al sistema y a los usuarios de ataques externos.
Se propone el uso de redes privadas virtuales (VPN) que pueden hacer posible proporcionar los
medios para garantizar lo que el Software por sí solo no puede.
 Autentificación y autorización: ¿Quién está del otro lado? Usuario/equipo y qué nivel de
acceso debe tener.
 Integridad: de que los datos enviados no han sido alterados. Para ello se utiliza funciones
de Hash. Los algoritmos de hash más comunes son los Message Digest (MD2 y MD5) y el
Secure Hash Algorithm (SHA).
 Confidencialidad: Dado que sólo puede ser interpretada por los destinatarios de la misma.
Se hace uso de algoritmos de cifrado como Data Encryption Standard (DES), Triple DES
(3DES) y Advanced Encryption Standard (AES).
 No repudio: es decir, un mensaje tiene que ir firmado, y el que lo firma no puede negar
que el mensaje lo envió él o ella.
Para lograr esto se requiere del uso de un certificado digital.
Certificado Digital
Un certificado digital es un documento digital mediante el cual un tercero confiable (una autoridad
de certificación) garantiza la vinculación entre la identidad de un sujeto o entidad y su clave
pública. El certificado contiene usualmente el nombre de la entidad certificada, número de serie,
fecha de expiración, una copia de la clave pública del titular del certificado (utilizada para la
verificación de su firma digital) y la firma digital de la autoridad emisora del certificado de forma
que el receptor pueda verificar que esta última ha establecido realmente la asociación.
Un certificado emitido por una entidad de certificación autorizada, además de estar firmado
digitalmente por ésta, debe contener por lo menos lo siguiente:





Nombre, dirección y domicilio del suscriptor.
Identificación del suscriptor nombrado en el certificado.
El nombre, la dirección y el lugar donde realiza actividades la entidad de certificación.
La clave pública del usuario.
La metodología para verificar la firma digital del suscriptor impuesta en el mensaje de
datos.
 El número de serie del certificado.
 Fecha de emisión y expiración del certificado.
Jair Iván Piñones García
Página 64
Cualquier individuo o institución puede generar un certificado digital, pero si éste emisor no es
reconocido por quienes interactúen con el propietario del certificado, el valor del mismo es
prácticamente nulo. Por ello los emisores deben acreditarse: así se denomina al proceso por el
cual entidades reconocidas, generalmente públicas, otorgan validez a la institución certificadora,
de forma que su firma pueda ser reconocida como fiable, transmitiendo esa fiabilidad a los
certificados emitidos por la citada institución.
Para que un certificado digital tenga validez legal, el prestador de Servicios de Certificación debe
acreditarse en cada país de acuerdo a la normativa que cada uno defina. En el caso especifico de
México, está regido por la Secretaria de Economía.
Red Privada Virtual para el SADE.
Requerimientos básicos.
 Identificación de usuario: las VPN deben verificar la identidad de los usuarios y restringir
su acceso a aquellos que no se encuentren autorizados.
 Codificación de datos: los datos que se van a transmitir a través de la red pública
(Internet), antes deben ser cifrados, para que así no puedan ser leídos. Esta tarea se
realiza con algoritmos de cifrado como DES o 3DES que sólo pueden ser leídos por el
emisor y receptor.
 Administración de claves: las VPN deben actualizar las claves de cifrado para los usuarios.
Tipo de conexión.
Para establecer la conexión en las terminales remotas se utiliza una técnica llamada
entunelamiento (tunneling), los paquetes de datos son enrutados por la red pública, tal como
Internet o alguna otra red comercial, en un túnel privado que simula una conexión punto a punto.
Este recurso hace que por la misma red puedan crearse muchos enlaces por diferentes túneles
virtuales a través de la misma infraestructura. También hace universales para su transporte los
diferentes protocolos LAN entre los que se encuentran IP, IPX, Appletalk y Netbeui, de allí la
característica de multiprotocolo que hace sumamente universal la tecnología de las redes virtuales
privadas.
Adicionalmente y para completar una solución VPN deben existir uno o más dispositivos o
paquetes de software que brinden cifrado, autenticación y autorización a los usuarios del túnel.
Además muchos de estos equipos brindan información sobre el ancho de banda, el estado del
canal y muchos más datos de gestión y de servicio.
Las VPNs se caracterizan también por su flexibilidad. Pueden ser conexiones punto-punto o puntomultipunto. Reemplazando una red privada con muchos y costosos enlaces dedicados, por un solo
enlace a una ISP que brinde un punto de presencia en la red (POP por sus siglas en inglés), una
compañía puede tener fácilmente toda una infraestructura de acceso remoto, sin la necesidad de
Jair Iván Piñones García
Página 65
Sistema Administrativo De Elecciones “SADE”
tener una gran cantidad de líneas telefónicas análogas o digitales, y de tener costosos pools de
módems o servidores de acceso, o de pagar costosas facturas por llamadas de larga distancia. En
algunos casos las ISP se hacen cargo del costo que les genera a los usuarios remotos su conexión a
Internet local, pues ven en este tipo de negocio un mayor interés por los dividendos del acceso.
El objetivo final de una VPN es brindarle una conexión al usuario remoto como si este estuviera
disfrutando directamente de su red privada y de los beneficios y servicios que dentro de ella
dispone, aunque esta conexión se realice sobre una infraestructura pública.
Equipos necesarios.
En una jornada electoral se instalan alrededor de 140 mil 239 casillas en todo el país. Para cubrir
este número de casillas necesitamos enrutadores que soporten un gran número de VPN’S pues se
requiere por lo menos una VPN por cada casilla instalada.
La solución se encuentra en adquirir equipos cisco que cubran el número total de casillas y que
además soporten ese gran número de sesiones en línea simultáneamente.
El equipo cisco que cumple con estos requerimientos es el Cisco ASA 5585-S60 que permite el uso
simultaneo de 10 mil VPN’S. Con 14 equipos como este no se alcanza a cubrir el número total de
VPN’S que se necesitan pues faltan por cubrir 239 sitios remotos. Sin embargo se puede adquirir
un equipo de la misma serie pero que soporte un número menor de VPN’S. El equipo Cisco ASA
5510 soporta 250 sesiones de red VPN simultáneamente. Por lo tanto se requieren adquirir 15
equipos Cisco, 14 Cisco ASA 5585-S60 y 1 Cisco ASA 5510 para cubrir el número de redes virtuales
privadas que se requieren para garantizar la seguridad del sistema y los datos transmitidos.
Figura. 23. Equipos Cisco de la serie ASA 5500
Jair Iván Piñones García
Página 66
Diagrama para VPN
Figura 24. Muestra el diagrama mínimo de la propuesta de uso de VPN. Las subredes están
determinadas por cada una de las casillas instaladas a lo largo del país. Los ROUTERS dentro de la
red de cada casilla son los que distribuyen las principales empresas de Internet, el ROUTER
correspondiente a las oficinas del IFE, establecen la conexión “tunneling” con los routers de las
redes de las casillas.
Jair Iván Piñones García
Página 67
Sistema Administrativo De Elecciones “SADE”
8. ANEXOS
8.1.
Pantallas y código.
8.1.1. Código de la hoja de estilos.
Código de la hoja de estilos CSS.
@charset "utf-8";
/* CSS Document */
body,td,th {
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
font-size: 100%;
color: #600;
}
body {
background-color: #FFF;
}
a:link {
color: #00F;
}
a:visited {
color: #06F;
}
a:hover {
color: #09C;
}
a:active {
color: #0FF;
}
h1 {
font-size: 150%;
color: #003;
}
h2 {
font-size: 125%;
color: #006;
}
h3 {
font-size: 112%;
color: #009;
}
.contenedor{
width:100%; max-width:1260px; max-height:720px; background:
}
.sidebar1 {
float: left;
width: 20%;
background: #93A5C4;
padding-bottom: 10px;
}
.contenido {
padding:10px 0;
width:79%;
float:right;
#FFF; margin: 0 auto;
}
.contenido ul, contenido ol{
Jair Iván Piñones García
Página 68
padding: 0 15px 15px 40px;
}
ul.nav{
list-style:none;
border-top:1px solid #666;
margin-bottom:15px;
}
ul.nav li{
border-bottom:1px solid #666;
}
ul.nav a, ul.nav a:visited{
padding: 5px 5px 5px 15px;
display:block;
text-decoration:none;
background:#8090AB;
color:#000;
}
ul.nav a:hover, ul.nav a:active, ul.nav a:focus{
background:#6F7D94;
color:#FFF;
}
.piedepagina {
padding: 10px 0;
background:#6F7D94;
position:relative;
clear:both;
text-align: center;
}
Jair Iván Piñones García
Página 69
Sistema Administrativo De Elecciones “SADE”
8.1.2. INICIO (INDEX)
Figura. 25 Página de Inicio
Código:
<?php require_once('Connections/coneccion1.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
Jair Iván Piñones García
Página 70
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['orc'])) {
$loginUsername=$_POST['orc'];
$password=$_POST['contrase'];
$MM_fldUserAuthorization = "accesoadmon";
$MM_redirectLoginSuccess = "/SADEPrueba/Electores/tipodeusuario.php";
$MM_redirectLoginFailed = "/SADEPrueba/datosincorrectos.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_coneccion1, $coneccion1);
$LoginRS__query=sprintf("SELECT curp, contrase, accesoadmon FROM electores WHERE curp=%s AND contrase=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
$LoginRS = mysql_query($LoginRS__query, $coneccion1) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = mysql_result($LoginRS,0,'accesoadmon');
if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link href="estiloforms.css" rel="stylesheet" type="text/css" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo" width="100%"
height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<form id="form1" name="form1" method="POST" action="<?php echo $loginFormAction; ?>">
<p>Inicio de Sesión</p>
<p>ORC:
<label for="orc2"><br />
</label>
<input type="text" name="orc" id="orc2" />
</p>
<p>Contraseña:
Jair Iván Piñones García
Página 71
Sistema Administrativo De Elecciones “SADE”
<label for="contrase"><br />
</label>
<input type="password" name="contrase" id="contrase" />
</p>
<p>
<input type="submit" name="iniciar" id="iniciar" value="Ingresar" />
</p>
</form>
<p>
<li> <a href="Segura/paneadmon.php"> Entrada Provisional</a></li>
<li> <a href="ResultadosPresidente.php"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1> BIENVENIDO A SADE </h1>
<p>SADE (Sistema Administrativo De Elecciones) es un sistema donde usted podrá realizar su voto de una manera rápida y segura.
SADE proporcionara los elementos necesarios para que usted pueda ver la boleta electoral así como el nombre de los Partidos Políticos
y sus respectivos candidatos. </p>
<p> Adem�s desde la pagina de SADE usted podr� checar los resultados de la elección desde el primer minuto de esta.</p>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados �, Jair Iv�n Pi�ones Garc�a 2010 Oficinas Centrales: Cerrada 28 A No. 5
Col. Santiago Atepetlac,
Delegaci�n Gustavo A. Madero, C.P. 07640, M�xico,D.F. </p>
<p>Este sitio se ve mejor en una resoluci�n de 1024X768 p�xeles o superior<!--fin del pie de pagina---></p>
</div>
<!--fin del contenedor--></div>
</body>
</html>
Jair Iván Piñones García
Página 72
8.1.3. TIPO DE USUARIO
Figura. 26 Diseño de la página del Tipo de usuario. Esta página varía dependiendo del tipo de
usuario que inicie sesión.
Código:
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "s,n";
$MM_donotCheckaccess = "false";
// *** Restrict Access To Page: Grant or deny access to this page
Jair Iván Piñones García
Página 73
Sistema Administrativo De Elecciones “SADE”
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if
(!((isset($_SESSION['MM_Username']))
&&
(isAuthorized("",$MM_authorizedUsers,
$_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$_SESSION['MM_Username'],
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
Jair Iván Piñones García
Página 74
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_REelector = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_REelector = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_REelector = sprintf("SELECT * FROM electores WHERE curp = %s", GetSQLValueString($colname_REelector, "text"));
$REelector = mysql_query($query_REelector, $coneccion1) or die(mysql_error());
$row_REelector = mysql_fetch_assoc($REelector);
$totalRows_REelector = mysql_num_rows($REelector);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ansi" />
<title>Untitled Document</title>
<link href="/SADEPrueba/Segura/estiloforms.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a><img src="/SADEPrueba/Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo" width="1209"
height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<form action="" method="post" name="form1" class="nav" id="form1">
<p>Bienvenido, <?php echo $row_REelector['nombre']; ?></p>
<p><a href="<?php echo $logoutAction ?>">Log out</a></p>
</form>
<li> <a href="#"> ?Que es SADE? </a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1> BIENVENIDO <?php echo $row_REelector['nombre']; ?></h1>
<h1>
<?php if($_SESSION['MM_UserGroup']=='s') {?>
</h1>
<h3><a href="/SADEPrueba/Segura/paneadmon.php">Menu de Administrador.</a></h3>
<h3><a
href="/SADEPrueba/Electores/eleccionesactivas.php">Ir
a
Votar.</a></h3><?php
}
else
{?><h3><a
href="/SADEPrueba/Electores/eleccionesactivas.php">Realizar Voto</a></h3>
<?php }?>
<h3><a href="/SADEPrueba/index.php">Regresar a la pagina principal</a></h3>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados ?, Jair Iv?n Pi?ones Garc?a 2010 Oficinas Centrales: Cerrada 28 A No. 5 Col. Santiago Atepetlac, Delegaci?n
Gustavo A. Madero, C.P. 07640, M?xico,D.F. </p>
<p>Este sitio se ve mejor en una resoluci?n de 1024X768 p?xeles o superior<!--fin del pie de pagina---></p>
Jair Iván Piñones García
Página 75
Sistema Administrativo De Elecciones “SADE”
</div>
<!--fin del contenedor--></div>
</body>
</html>
<?php
mysql_free_result($REelector);
?>
Jair Iván Piñones García
Página 76
8.1.4. ELECCIONES ACTIVAS.
Figura. 27. Diseño de la página de elecciones activas
Código.
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "s,n";
$MM_donotCheckaccess = "false";
Jair Iván Piñones García
Página 77
Sistema Administrativo De Elecciones “SADE”
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if
(!((isset($_SESSION['MM_Username']))
&&
(isAuthorized("",$MM_authorizedUsers,
$_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$_SESSION['MM_Username'],
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
Jair Iván Piñones García
Página 78
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSeleccion = "SELECT * FROM elecciones WHERE elecciones.activo=1";
$RSeleccion = mysql_query($query_RSeleccion, $coneccion1) or die(mysql_error());
$row_RSeleccion = mysql_fetch_assoc($RSeleccion);
$totalRows_RSeleccion = mysql_num_rows($RSeleccion);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RStipodecargo = "SELECT * FROM tipo_cargo";
$RStipodecargo = mysql_query($query_RStipodecargo, $coneccion1) or die(mysql_error());
$row_RStipodecargo = mysql_fetch_assoc($RStipodecargo);
$totalRows_RStipodecargo = mysql_num_rows($RStipodecargo);
$colname_RSelector = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_RSelector = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSelector = sprintf("SELECT * FROM electores WHERE curp = %s", GetSQLValueString($colname_RSelector, "text"));
$RSelector = mysql_query($query_RSelector, $coneccion1) or die(mysql_error());
$row_RSelector = mysql_fetch_assoc($RSelector);
$totalRows_RSelector = mysql_num_rows($RSelector);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="/SADEPrueba/Segura/estiloforms.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="../Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo" width="1209"
height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<p>Bienvenido, <?php echo $row_RSelector['nombre']; ?></p>
<p><a href="<?php echo $logoutAction ?>">Log out</a></p>
<li><a href="Segura/paneadmon.php">Entrada Provisional</a></li>
<li> <a href="#"> �Que es SADE? </a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<P><?php
date_default_timezone_set('America/Tegucigalpa');
echo date ("Y-m-d H:i");
?></P>
Jair Iván Piñones García
Página 79
Sistema Administrativo De Elecciones “SADE”
<p><!--fin de la barra---></div>
<div class="contenido">
<h1>ELECCIONES ACTIVAS</h1>
<p>Selecciona la opci�n deseada.</p>
<form id="form2" name="form2" method="post" action="">
<?php
do
{
if ($row_RSeleccion['activo']==1)
{
$posicion=$row_RSeleccion['idcargo'];
switch($posicion){
case '1':
if($row_RSelector['yavotop']==0){ ?>
<a href="/SADEPrueba/Electores/vota.php">
<?php }
else {
?>
<a href="/SADEPrueba/Electores/votoregistrado.php">
<?php
}
echo "Presidente de la Republica";
?>
</a><p> </p>
<?php
break;
case '2':
?>
<a href="/SADEPrueba/Electores/votadiputados1.php">
<?php
echo "Diputados por Mayoria Relativa";
?>
</a><p> </p>
<?php
break;
case '3':
?>
<a href="/SADEPrueba/Electores/votadiputados2.php">
<?php
echo "Diputados por Representaci�n Proporcional";
?>
</a><p> </p>
<?php
break;
case '4':
?>
<a href="/SADEPrueba/Electores/votasenadores1.php">
<?php
echo "Senadores por Mayoria Relativa";
?>
</a><p> </p>
<?php
break;
case '5':
?>
<a href="/SADEPrueba/Electores/votasenadores1.php">
<?php
Jair Iván Piñones García
Página 80
echo "Senadores por Represaentaci�n Proporcional";
?>
</a><p> </p>
<?php
break;}
}
else
{
echo" NO HAY ELECCIONES ACTIVAS";
}
}
while ($row_RSeleccion = mysql_fetch_assoc($RSeleccion));
?>
</form>
<p><a href="/SADEPrueba/Electores/tipodeusuario.php">Regresar</a></p>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados �, Jair Iv�n Pi�ones Garc�a 2010 Oficinas Centrales: Cerrada 28 A No. 5
Col. Santiago Atepetlac,
Delegaci�n Gustavo A. Madero, C.P. 07640, M�xico,D.F. </p>
<p>Este sitio se ve mejor en una resoluci�n de 1024X768 p�xeles o superior<!--fin del pie de pagina---></p>
</div>
<!--fin del contenedor--></div>
</body>
</html>
<?php
mysql_free_result($RSeleccion);
mysql_free_result($RSelector);
?>
Jair Iván Piñones García
Página 81
Sistema Administrativo De Elecciones “SADE”
8.1.5. VOTACIONES
Figura. 28 Diseño de la página de emisión de voto
Código:
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
Jair Iván Piñones García
Página 82
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "s,n";
$MM_donotCheckaccess = "false";
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if
(!((isset($_SESSION['MM_Username']))
&&
(isAuthorized("",$MM_authorizedUsers,
$_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
Jair Iván Piñones García
$_SESSION['MM_Username'],
Página 83
Sistema Administrativo De Elecciones “SADE”
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
Jair Iván Piñones García
Página 84
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_RSelectores = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_RSelectores = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSelectores = sprintf("SELECT * FROM electores WHERE curp = %s", GetSQLValueString($colname_RSelectores, "text"));
$RSelectores = mysql_query($query_RSelectores, $coneccion1) or die(mysql_error());
$row_RSelectores = mysql_fetch_assoc($RSelectores);
$totalRows_RSelectores = mysql_num_rows($RSelectores);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RScandidatos = "SELECT * FROM candidatos WHERE idcargo = 1";
$RScandidatos = mysql_query($query_RScandidatos, $coneccion1) or die(mysql_error());
$row_RScandidatos = mysql_fetch_assoc($RScandidatos);
$totalRows_RScandidatos = mysql_num_rows($RScandidatos);
$colname_RSpartido = "-1";
if (isset($_SESSION['candpartido'])) {
$colname_RSpartido = $_SESSION['candpartido'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSpartido = sprintf("SELECT * FROM partidopolitico WHERE idpartido = %s", GetSQLValueString($colname_RSpartido, "int"));
$RSpartido = mysql_query($query_RSpartido, $coneccion1) or die(mysql_error());
$row_RSpartido = mysql_fetch_assoc($RSpartido);
$totalRows_RSpartido = mysql_num_rows($RSpartido);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSPAN = "SELECT nombre FROM candidatos WHERE candidatos.idcargo=1 AND candidatos.idpartido=1";
$RSPAN = mysql_query($query_RSPAN, $coneccion1) or die(mysql_error());
$row_RSPAN = mysql_fetch_assoc($RSPAN);
$totalRows_RSPAN = mysql_num_rows($RSPAN);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSPRI = "SELECT nombre FROM candidatos WHERE candidatos.idcargo=1 AND candidatos.idpartido=2";
$RSPRI = mysql_query($query_RSPRI, $coneccion1) or die(mysql_error());
$row_RSPRI = mysql_fetch_assoc($RSPRI);
$totalRows_RSPRI = mysql_num_rows($RSPRI);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSPRD = "SELECT nombre FROM candidatos WHERE candidatos.idcargo=1 AND candidatos.idpartido=3";
$RSPRD = mysql_query($query_RSPRD, $coneccion1) or die(mysql_error());
$row_RSPRD = mysql_fetch_assoc($RSPRD);
$totalRows_RSPRD = mysql_num_rows($RSPRD);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSPT = "SELECT nombre FROM candidatos WHERE candidatos.idcargo=1 AND candidatos.idpartido=4";
$RSPT = mysql_query($query_RSPT, $coneccion1) or die(mysql_error());
$row_RSPT = mysql_fetch_assoc($RSPT);
$totalRows_RSPT = mysql_num_rows($RSPT);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSPVEM = "SELECT nombre FROM candidatos WHERE candidatos.idcargo=1 AND candidatos.idpartido=5";
Jair Iván Piñones García
Página 85
Sistema Administrativo De Elecciones “SADE”
$RSPVEM = mysql_query($query_RSPVEM, $coneccion1) or die(mysql_error());
$row_RSPVEM = mysql_fetch_assoc($RSPVEM);
$totalRows_RSPVEM = mysql_num_rows($RSPVEM);
mysql_select_db($database_coneccion1, $coneccion1);
$query_Recordset1 = "SELECT nombre FROM candidatos WHERE candidatos.idcargo=1 AND candidatos.idpartido=6";
$Recordset1 = mysql_query($query_Recordset1, $coneccion1) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSPANAL = "SELECT nombre FROM candidatos WHERE candidatos.idcargo=1 AND candidatos.idpartido=7";
$RSPANAL = mysql_query($query_RSPANAL, $coneccion1) or die(mysql_error());
$row_RSPANAL = mysql_fetch_assoc($RSPANAL);
$totalRows_RSPANAL = mysql_num_rows($RSPANAL);
$_SESSION['usercircuns']=$row_RSelectores['circunscripcion'];
$_SESSION['userestado']=$row_RSelectores['estado'];
$_SESSION['usermunicipio']=$row_RSelectores['municipio'];
$_SESSION['userdistrito']=$row_RSelectores['distrito'];
$candicargo=$row_RScandidatos['idcargo'];
$candipartido=$row_RScandidatos['idpartido'];
$candicircun=$row_RScandidatos['circunscripcion'];
$candiestado=$row_RScandidatos['estado'];
$candimunicipio=$row_RScandidatos['municipio'];
$candistrito=$row_RScandidatos['distrito'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ansi" />
<title>Untitled Document</title>
<link href="/SADEPrueba/Segura/estiloforms.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="/SADEPrueba/Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo"
width="1209" height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<ul class="nav">
<form id="form1" name="form1" method="post" action="">
<p><?php echo $row_RSelectores['nombre']; ?></p>
<p> <a href="<?php echo $logoutAction ?>">Log out</a></p>
</form>
</ul>
<li> <a href="Segura/paneadmon.php"> Entrada Provisional</a></li>
<li> <a href="#"> ¿Que es SADE? </a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1> VOTA </h1>
<p>Vota por el candidato de tu preferencia.</p>
<form id="form2" name="form2" method="post" action="">
<table width="100">
Jair Iván Piñones García
Página 86
<tr>
<td><label>
<input type="radio" name="RadioGroup1" value="radio" id="RadioGroup1_0" />
PAN</label></td>
<td align="center" valign="middle"> PARTIDO ACCION NACIONAL
<input name="pan" type="image" id="pan" src="/SADEPrueba/Imagenes/SADE/logoPAN.jpg" align="middle" width="121"
height="120" a /></td>
<td align="center" valign="middle"><?php echo $row_RSPAN['nombre']; ?>
</td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"><label>
<input type="radio" name="RadioGroup1" value="radio" id="RadioGroup1_1" />
PRI
</label></td>
<td align="center" valign="middle">PARTIDO REVOLUCIONARIO INSTITUCIONAL
<input type="image" name="pri" id="pri"
src="/SADEPrueba/Imagenes/SADE/PRI2_N.jpg" width="121" height="120" /></td>
<td align="center" valign="middle"><?php echo $row_RSPRI['nombre']; ?></td>
</tr>
<tr>
<td> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
</tr>
<tr>
<td><label>
<input type="radio" name="RadioGroup1" value="radio" id="RadioGroup1_2" />
PRD</label></td>
<td align="center" valign="middle"> PARTIDO DE LA REVOLUCION DEMOCRATICA
<input type="image" name="prd" id="prd" src="/SADEPrueba/Imagenes/SADE/logo_prd.jpg" width="121" height="120" /></td>
<td align="center" valign="middle"><?php echo $row_RSPRD['nombre']; ?></td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"><input type="radio" name="RadioGroup1" value="radio" id="RadioGroup1_3" />
PT</td>
<td align="center" valign="middle">PARTIDO DEL TRABAJO
<input type="image" name="pt" id="pt" src="/SADEPrueba/Imagenes/SADE/PT20Logo3.jpg" width="121" height="120" /></td>
<td align="center" valign="middle"><?php echo $row_RSPT['nombre']; ?></td>
</tr>
<tr>
<td> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
</tr>
<tr>
<td><label>
<input type="radio" name="RadioGroup1" value="radio" id="RadioGroup1_4" />
Jair Iván Piñones García
Página 87
Sistema Administrativo De Elecciones “SADE”
PVEM</label></td>
<td align="center" valign="middle"> PARTIDO VERDE ECOLOGISTA DE MEXICO
<input type="image" name="PVEM" id="PVEM" src="/SADEPrueba/Imagenes/SADE/yucatannews-logo-PVEM.jpg" width="121"
height="120" /></td>
<td align="center" valign="middle"><?php echo $row_RSPVEM['nombre']; ?></td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"><input type="radio" name="RadioGroup1" value="radio" id="RadioGroup1_5" />
Convergencia
</td>
<td align="center" valign="middle">CONVERGENCIA
<input type="image" name="convergencia" id="convergencia" src="/SADEPrueba/Imagenes/SADE/logo-convergencia370x2703.jpg" width="121" height="120" /></td>
<td align="center" valign="middle"><?php echo $row_Recordset1['nombre']; ?></td>
</tr>
<tr>
<td> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
</tr>
<tr>
<td><label>
<input type="radio" name="RadioGroup1" value="radio" id="RadioGroup1_6" />
PANAL</label></td>
<td align="center" valign="middle"> PARTIDO NUEVA ALIANZA
<input type="image" name="PANAL" id="PANAL" src="/SADEPrueba/Imagenes/SADE/Nueva_Alianza_logo.png" width="121"
height="120" /></td>
<td align="center" valign="middle"><?php echo $row_RSPANAL['nombre']; ?></td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
<td align="center" valign="middle"> </td>
</tr>
</table>
</form>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados ©, Jair Iván Piñones García 2010 Oficinas Centrales: Cerrada 28 A No. 5
Col. Santiago Atepetlac,
Delegación Gustavo A. Madero, C.P. 07640, México,D.F. </p>
<p>Este sitio se ve mejor en una resolución de 1024X768 píxeles o superior<!--fin del pie de pagina---></p>
</div>
<!--fin del contenedor--></div>
</body>
</html>
<?php
mysql_free_result($RSelectores);
mysql_free_result($RScandidatos);
mysql_free_result($RSpartido);
mysql_free_result($RSPAN);
Jair Iván Piñones García
Página 88
mysql_free_result($RSPRI);
mysql_free_result($RSPRD);
mysql_free_result($RSPT);
mysql_free_result($RSPVEM);
mysql_free_result($Recordset1);
mysql_free_result($RSPANAL);
?>
Jair Iván Piñones García
Página 89
Sistema Administrativo De Elecciones “SADE”
8.1.6. VOTO REALIZADO
Figura. 29 Diseño de la página de Voto realizado
Código.
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "s,n";
$MM_donotCheckaccess = "false";
Jair Iván Piñones García
Página 90
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if
(!((isset($_SESSION['MM_Username']))
&&
(isAuthorized("",$MM_authorizedUsers,
$_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$_SESSION['MM_Username'],
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
Jair Iván Piñones García
Página 91
Sistema Administrativo De Elecciones “SADE”
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_RSelectores = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_RSelectores = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSelectores = sprintf("SELECT nombre FROM electores WHERE curp = %s", GetSQLValueString($colname_RSelectores, "text"));
$RSelectores = mysql_query($query_RSelectores, $coneccion1) or die(mysql_error());
$row_RSelectores = mysql_fetch_assoc($RSelectores);
$totalRows_RSelectores = mysql_num_rows($RSelectores);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link href="/SADEPrueba/Segura/estiloforms.css" rel="stylesheet" type="text/css" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="../Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo" width="1209"
height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<ul class="nav">
<form id="form1" name="form1" method="post" action="">
<p>Bienvenido, <?php echo $row_RSelectores['nombre']; ?>
<p><a href="<?php echo $logoutAction ?>">Log out</a>
</form>
</ul>
<li> <a href="#"> Entrada Provisional</a></li>
<li> <a href="#"> ¿Qué es SADE?</a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1><img src="/SADEPrueba/Imagenes/SADE/votorealizado.gif" width="551" height="74" align="middle" /></h1>
<p><a href="/SADEPrueba/Electores/eleccionesactivas.php">Regresar</a></p>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados ©, Jair Iván Piñones García 2010 Oficinas Centrales: Cerrada 28 A No. 5
Delegación Gustavo A. Madero, C.P. 07640, México,D.F. </p>
Jair Iván Piñones García
Col. Santiago Atepetlac,
Página 92
<p>Este sitio se ve mejor en una resolución de 1024X768 píxeles o superior</p>
<!--fin del pie de pagina---></div>
<!--fin del contenedor--></div>
</body>
</html>
<?php
mysql_free_result($RSelectores);
?>
Jair Iván Piñones García
Página 93
Sistema Administrativo De Elecciones “SADE”
8.1.7. VOTO REGISTRADO.
Figura 30. Diseño de la página de Voto Registrado
Código.
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "s,n";
$MM_donotCheckaccess = "false";
Jair Iván Piñones García
Página 94
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if
(!((isset($_SESSION['MM_Username']))
&&
(isAuthorized("",$MM_authorizedUsers,
$_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$_SESSION['MM_Username'],
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
Jair Iván Piñones García
Página 95
Sistema Administrativo De Elecciones “SADE”
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_RSelectores = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_RSelectores = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSelectores = sprintf("SELECT * FROM electores WHERE curp = %s", GetSQLValueString($colname_RSelectores, "text"));
$RSelectores = mysql_query($query_RSelectores, $coneccion1) or die(mysql_error());
$row_RSelectores = mysql_fetch_assoc($RSelectores);
$totalRows_RSelectores = mysql_num_rows($RSelectores);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link href="/SADEPrueba/Segura/estiloforms.css" rel="stylesheet" type="text/css" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="../Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo" width="1209"
height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<ul class="nav">
<form action="" method="post" name="form1" class="nav" id="form1">
<p>Bienvenido,<?php echo $row_RSelectores['nombre']; ?> </p>
<p><a href="<?php echo $logoutAction ?>">Log out</a>
</form>
</ul>
<li> <a href="#"> Entrada Provisional</a></li>
<li> <a href="#"> ¿Qué es SADE?</a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1>SU VOTO YA FUE REGISTRADO<img src="/SADEPrueba/Imagenes/SADE/VotoRegistrado.gif" width="1021" height="173"
align="middle" class="contenido" /></h1>
<p> </p>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados ©, Jair Iván Piñones García 2010 Oficinas Centrales: Cerrada 28 A No. 5
Delegación Gustavo A. Madero, C.P. 07640, México,D.F. </p>
Jair Iván Piñones García
Col. Santiago Atepetlac,
Página 96
<p>Este sitio se ve mejor en una resolución de 1024X768 píxeles o superior</p>
<!--fin del pie de pagina---></div>
<!--fin del contenedor--></div>
</body>
</html>
<?php
mysql_free_result($RSelectores);
?>
</body>
</html>
Jair Iván Piñones García
Página 97
Sistema Administrativo De Elecciones “SADE”
8.1.8. MENU ADMINISTRADORES.
Figura 31. Diseño de la página del Menú de Administradores
Código.
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
Jair Iván Piñones García
Página 98
$MM_authorizedUsers = "s";
$MM_donotCheckaccess = "false";
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if
(!((isset($_SESSION['MM_Username']))
&&
(isAuthorized("",$MM_authorizedUsers,
$_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$_SESSION['MM_Username'],
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
Jair Iván Piñones García
Página 99
Sistema Administrativo De Elecciones “SADE”
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_RSelectores = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_RSelectores = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSelectores = sprintf("SELECT * FROM electores WHERE curp = %s", GetSQLValueString($colname_RSelectores, "text"));
$RSelectores = mysql_query($query_RSelectores, $coneccion1) or die(mysql_error());
$row_RSelectores = mysql_fetch_assoc($RSelectores);
$totalRows_RSelectores = mysql_num_rows($RSelectores);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link href="estiloforms.css" rel="stylesheet" type="text/css" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="/SADEPrueba/Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo"
width="100%" height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<ul class="nav">
<form id="form1" name="form1" method="post" action="">
<p>Bienvenido,<?php echo $row_RSelectores['nombre']; ?> </p>
<p><a href="<?php echo $logoutAction ?>">Log out</a>
</form>
</ul>
<li> <a href="#"> Entrada Provisional</a></li>
<li> <a href="#"> ¿Que es SADE¿</a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1> ADMINISTRADORES </h1>
<p>Este es el menú de Administradores. Aquí podrás seleccionar alguna opcion de las siguientes que se muestran a continuación para
atas o bajas de o manejo de una jornada electoral. </p>
<h3><a href="/SADEPrueba/Segura/admoncandi.php">Candidatos.</a></h3>
<h3><a href="/SADEPrueba/Segura/admonpartido.php">Partidos Políticos.</a></h3>
Jair Iván Piñones García
Página 100
<h3><a href="/SADEPrueba/Segura/admonelector.php">Electores.</a></h3>
<h3><a href="/SADEPrueba/Segura/consultas.php">Consultas.</a></h3>
<h3><a href="/SADEPrueba/Segura/Jornada.php">Jornada Electoral.</a></h3>
<h3><a href="/SADEPrueba/Electores/tipodeusuario.php">Regresar al menú de usuario.</a> <!--fin del contenido--->
</h3>
</div>
<div class="piedepagina">
<p>Derechos Reservados ©, Jair Iván Piñones García 2010 Oficinas Centrales: Cerrada 28 A No. 5
Delegación Gustavo A. Madero, C.P. 07640, México,D.F. </p>
<p>Este sitio se ve mejor en una resolución de 1024X768 píxeles o superior</p>
<!--fin del pie de pagina---></div>
<!--fin del contenedor--></div>
</body>
</html>
<?php
mysql_free_result($RSelectores);
?>
Jair Iván Piñones García
Col. Santiago Atepetlac,
Página 101
Sistema Administrativo De Elecciones “SADE”
8.1.9. INGRESAR CANDIDATO.
Figura 32. Formulario para ingresar un candidato nuevo
Código.
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
Jair Iván Piñones García
Página 102
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "s";
$MM_donotCheckaccess = "false";
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if
(!((isset($_SESSION['MM_Username']))
&&
(isAuthorized("",$MM_authorizedUsers,
$_SESSION['MM_UserGroup'])))) {
Jair Iván Piñones García
$_SESSION['MM_Username'],
Página 103
Sistema Administrativo De Elecciones “SADE”
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
$insertSQL = sprintf("INSERT INTO candidatos (nombre, edad, sexo, idpartido, idcargo, circunscripcion, municipio, estado) VALUES (%s,
%s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['nombre'], "text"),
GetSQLValueString($_POST['edad'], "int"),
GetSQLValueString($_POST['sexo'], "text"),
GetSQLValueString($_POST['id_partido'], "int"),
GetSQLValueString($_POST['idcargo'], "int"),
GetSQLValueString($_POST['circunscripcion'], "int"),
GetSQLValueString($_POST['municipio'], "int"),
Jair Iván Piñones García
Página 104
GetSQLValueString($_POST['estado'], "int"));
mysql_select_db($database_coneccion1, $coneccion1);
$Result1 = mysql_query($insertSQL, $coneccion1) or die(mysql_error());
$insertGoTo = "/SADEPrueba/Segura/admoncandi.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form3")) {
$updateSQL = sprintf("UPDATE candidatos SET nombre=%s, edad=%s, sexo=%s, idpartido=%s, idcargo=%s, circunscripcion=%s,
municipio=%s, estado=%s WHERE idcandidato=%s",
GetSQLValueString($_POST['nombre2'], "text"),
GetSQLValueString($_POST['edad2'], "int"),
GetSQLValueString($_POST['sexo2'], "text"),
GetSQLValueString($_POST['id_partido2'], "int"),
GetSQLValueString($_POST['idcargo2'], "int"),
GetSQLValueString($_POST['circunscripcion2'], "int"),
GetSQLValueString($_POST['municipio2'], "int"),
GetSQLValueString($_POST['estado2'], "int"),
GetSQLValueString($_POST['idcandidato'], "int"));
mysql_select_db($database_coneccion1, $coneccion1);
$Result1 = mysql_query($updateSQL, $coneccion1) or die(mysql_error());
$updateGoTo = "/SADEPrueba/Segura/admoncandi.php";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
}
$currentPage = $_SERVER["PHP_SELF"];
$maxRows_RScandidatos = 10;
$pageNum_RScandidatos = 0;
if (isset($_GET['pageNum_RScandidatos'])) {
$pageNum_RScandidatos = $_GET['pageNum_RScandidatos'];
}
$startRow_RScandidatos = $pageNum_RScandidatos * $maxRows_RScandidatos;
mysql_select_db($database_coneccion1, $coneccion1);
$query_RScandidatos = "SELECT * FROM candidatos";
$query_limit_RScandidatos = sprintf("%s LIMIT %d, %d", $query_RScandidatos, $startRow_RScandidatos, $maxRows_RScandidatos);
$RScandidatos = mysql_query($query_limit_RScandidatos, $coneccion1) or die(mysql_error());
$row_RScandidatos = mysql_fetch_assoc($RScandidatos);
if (isset($_GET['totalRows_RScandidatos'])) {
$totalRows_RScandidatos = $_GET['totalRows_RScandidatos'];
} else {
$all_RScandidatos = mysql_query($query_RScandidatos);
$totalRows_RScandidatos = mysql_num_rows($all_RScandidatos);
}
Jair Iván Piñones García
Página 105
Sistema Administrativo De Elecciones “SADE”
$totalPages_RScandidatos = ceil($totalRows_RScandidatos/$maxRows_RScandidatos)-1;
$colname_RSelectores = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_RSelectores = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSelectores = sprintf("SELECT * FROM electores WHERE curp = %s", GetSQLValueString($colname_RSelectores, "text"));
$RSelectores = mysql_query($query_RSelectores, $coneccion1) or die(mysql_error());
$row_RSelectores = mysql_fetch_assoc($RSelectores);
$totalRows_RSelectores = mysql_num_rows($RSelectores);
$queryString_RScandidatos = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_RScandidatos") == false &&
stristr($param, "totalRows_RScandidatos") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_RScandidatos = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_RScandidatos = sprintf("&totalRows_RScandidatos=%d%s", $totalRows_RScandidatos, $queryString_RScandidatos);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
body,td,th {
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
font-size: 100%;
color: #600;
}
body {
background-color: #FFF;
}
a:link {
color: #00F;
}
a:visited {
color: #06F;
}
a:hover {
color: #09C;
}
a:active {
color: #0FF;
}
h1 {
font-size: 150%;
color: #003;
Jair Iván Piñones García
Página 106
}
h2 {
font-size: 125%;
color: #006;
}
h3 {
font-size: 112%;
color: #009;
}
.contenedor{
width:100%; max-width:1260px; max-height:720px; background:
position:relative
}
.sidebar1 {
float: left;
width: 20%;
background: #93A5C4;
padding-bottom: 10px;
}
.contenido {
padding:10px 0;
width:79%;
float:right;
#FFF;
margin:
0
auto;
}
.contenido ul, contenido ol{
padding: 0 15px 15px 40px;
}
ul.nav{
list-style:none;
border-top:1px solid #666;
margin-bottom:15px;
}
ul.nav li{
border-bottom:1px solid #666;
}
ul.nav a, ul.nav a:visited{
padding: 5px 5px 5px 15px;
display:block;
text-decoration:none;
background:#8090AB;
color:#000;
}
ul.nav a:hover, ul.nav a:active, ul.nav a:focus{
background:#6F7D94;
color:#FFF;
}
.piedepagina {
padding: 10px 0; background:#6F7D94; position:relative; clear:both;
}
</style>
<link href="/SADEPrueba/Segura/estiloforms.css" rel="stylesheet" type="text/css" />
<script src="/SADEPrueba/SpryAssets/SpryValidationTextField.js" type="text/javascript"></script><script type="text/javascript">
function MM_validateForm() { //v4.0
if (document.getElementById){
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
Jair Iván Piñones García
Página 107
Sistema Administrativo De Elecciones “SADE”
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
}}
</script>
<link href="/SADEPrueba/SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="/SADEPrueba/Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo"
style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<ul class="nav">
<form id="form1" name="form1" method="post" action="">
<p>Bienvenido, <?php echo $row_RSelectores['nombre']; ?></p>
<p><a href="<?php echo $logoutAction ?>">Log out</a>
</form>
</ul>
<li> <a href="#"> Entrada Provisional</a></li>
<li> <a href="#"> ¿Que es SADE?</a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1>INGRESAR CANDIDATO</h1>
<form action="<?php echo $editFormAction; ?>" method="POST" name="form2" id="form2" >
<p> 
Records <?php echo ($startRow_RScandidatos + 1) ?> to <?php echo min($startRow_RScandidatos + $maxRows_RScandidatos,
$totalRows_RScandidatos) ?> of <?php echo $totalRows_RScandidatos ?> </p>
<table border="1" cellpadding="2" cellspacing="2">
<tr>
<td>idcandidato</td>
<td>nombre</td>
<td>edad</td>
<td>sexo</td>
<td>idpartido</td>
<td>idcargo</td>
<td>circunscripcion</td>
<td>municipio</td>
<td>estado</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_RScandidatos['idcandidato']; ?></td>
<td><?php echo $row_RScandidatos['nombre']; ?></td>
<td><?php echo $row_RScandidatos['edad']; ?></td>
<td><?php echo $row_RScandidatos['sexo']; ?></td>
<td><?php echo $row_RScandidatos['idpartido']; ?></td>
<td><?php echo $row_RScandidatos['idcargo']; ?></td>
<td><?php echo $row_RScandidatos['circunscripcion']; ?></td>
Jair Iván Piñones García
Página 108
<td><?php echo $row_RScandidatos['municipio']; ?></td>
<td><?php echo $row_RScandidatos['estado']; ?></td>
</tr>
<?php } while ($row_RScandidatos = mysql_fetch_assoc($RScandidatos)); ?>
</table><table border="0">
<tr>
<td><?php if ($pageNum_RScandidatos > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_RScandidatos=%d%s", $currentPage, 0, $queryString_RScandidatos); ?>">First</a>
<?php } // Show if not first page ?></td>
<td><?php if ($pageNum_RScandidatos > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_RScandidatos=%d%s", $currentPage, max(0, $pageNum_RScandidatos - 1),
$queryString_RScandidatos); ?>">Previous</a>
<?php } // Show if not first page ?></td>
<td><?php if ($pageNum_RScandidatos < $totalPages_RScandidatos) { // Show if not last page ?>
<a
href="<?php
printf("%s?pageNum_RScandidatos=%d%s",
$currentPage,
min($totalPages_RScandidatos,
$pageNum_RScandidatos + 1), $queryString_RScandidatos); ?>">Next</a>
<?php } // Show if not last page ?></td>
<td><?php if ($pageNum_RScandidatos < $totalPages_RScandidatos) { // Show if not last page ?>
<a
href="<?php
printf("%s?pageNum_RScandidatos=%d%s",
$currentPage,
$totalPages_RScandidatos,
$queryString_RScandidatos); ?>">Last</a>
<?php } // Show if not last page ?></td>
</tr>
</table>
</p>
<table width="200" border="1">
<tr>
<td><label for="nombre">Nombre:</label></td>
<td><span id="sprytextfield2">
<input type="text" name="nombre" id="nombre" />
<span class="textfieldRequiredMsg">Obligatorio.</span><span class="textfieldMaxCharsMsg">Sobrepasó el número máximo de
caracteres permitidos.</span></span></td>
</tr>
<tr>
<td><label for="edad2">Edad:</label></td>
<td><span id="sprytextfield3">
<input type="text" name="edad" id="edad" />
<span class="textfieldRequiredMsg">Obligatorio.</span><span class="textfieldInvalidFormatMsg">Formato Invalido.</span><span
class="textfieldMinCharsMsg">Número minimo de caracteres es 2.</span><span class="textfieldMaxCharsMsg">El número maximo de
caracteres es 3.</span><span class="textfieldMinValueMsg">El valor introducido es menor a 18.</span></span></td>
</tr>
<tr>
<td>Sexo: </td>
<td><span id="sprytextfield4">
<input type="text" name="sexo" id="sexo" />
<span class="textfieldRequiredMsg">Obligatorio.</span><span class="textfieldMinCharsMsg">El número minimo de caracteres es
1.</span><span class="textfieldMaxCharsMsg">Excedio el número maximo de caracteres.</span></span></td>
</tr>
<tr>
<td><label for="id_partido2">ID Partido: </label></td>
<td><span id="sprytextfield6">
<input type="text" name="id_partido" id="id_partido" />
<span class="textfieldRequiredMsg">Obligatorio.</span><span class="textfieldInvalidFormatMsg">Formato Invalido.</span><span
class="textfieldMinCharsMsg">El número minimo de caracteres es 1.</span><span class="textfieldMaxCharsMsg">Excedio el número
maximo de caracteres.</span><span class="textfieldMinValueMsg">No puede introducir valores menores a 1.</span><span
class="textfieldMaxValueMsg">Valor no valido.</span></span></td>
</tr>
<tr>
<td>ID Cargo:</td>
Jair Iván Piñones García
Página 109
Sistema Administrativo De Elecciones “SADE”
<td><span id="sprytextfield7">
<label for="idcargo2"></label>
<input type="text" name="idcargo" id="idcargo2" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span><span
class="textfieldMinCharsMsg">Minimum
number
of
characters
not
met.</span><span
class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span><span class="textfieldMinValueMsg">The entered
value is less than the minimum required.</span><span class="textfieldMaxValueMsg">The entered value is greater than the maximum
allowed.</span></span></td>
</tr>
<tr>
<td><label for="circunscripcion6">Circunscripción: </label></td>
<td><span id="sprytextfield10">
<label for="circunscripcion5"></label>
<input type="text" name="circunscripcion" id="circunscripcion5" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span><span
class="textfieldMinCharsMsg">Minimum
number
of
characters
not
met.</span><span
class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span><span class="textfieldMinValueMsg">The entered
value is less than the minimum required.</span><span class="textfieldMaxValueMsg">The entered value is greater than the maximum
allowed.</span></span></td>
</tr>
<tr>
<td>Municipio: </td>
<td><span id="sprytextfield11">
<label for="municipio2"></label>
<input type="text" name="municipio" id="municipio2" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span><span
class="textfieldMinCharsMsg">Minimum
number
of
characters
not
met.</span><span
class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span></span></td>
</tr>
<tr>
<td>Estado: </td>
<td><span id="sprytextfield12">
<label for="estado3"></label>
<input type="text" name="estado" id="estado3" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span><span
class="textfieldMinCharsMsg">Minimum
number
of
characters
not
met.</span><span
class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span><span class="textfieldMinValueMsg">The entered
value is less than the minimum required.</span><span class="textfieldMaxValueMsg">The entered value is greater than the maximum
allowed.</span></span></td>
</tr>
<tr>
<td><input type="submit" name="Insertar" id="Insertar" value="Insertar Registro" /></td>
<td> </td>
</tr>
</table>
<p>
<input type="hidden" name="MM_insert" value="form2" />
</p>
<input type="hidden" name="MM_insert" value="form2" />
</form>
<form action="<?php echo $editFormAction; ?>" method="POST" name="form3" id="form3">
<table width="200" border="1">
<tr>
<td>ID Candidato</td>
<td><label for="idcandidato"></label>
Jair Iván Piñones García
Página 110
<input type="text" name="idcandidato" id="idcandidato" /></td>
</tr>
<tr>
<td><label for="nombre">Nombre:</label></td>
<td><span id="sprytextfield">
<input type="text" name="nombre2" id="nombre" />
<span class="textfieldRequiredMsg">Obligatorio.</span><span class="textfieldMaxCharsMsg">Sobrepasó el número máximo de
caracteres permitidos.</span></span></td>
</tr>
<tr>
<td><label for="edad4">Edad:</label></td>
<td><span id="sprytextfield5">
<input type="text" name="edad2" id="edad2" />
<span class="textfieldRequiredMsg">Obligatorio.</span><span class="textfieldInvalidFormatMsg">Formato Invalido.</span><span
class="textfieldMinCharsMsg">Número minimo de caracteres es 2.</span><span class="textfieldMaxCharsMsg">El número maximo de
caracteres es 3.</span><span class="textfieldMinValueMsg">El valor introducido es menor a 18.</span></span></td>
</tr>
<tr>
<td>Sexo: </td>
<td><span id="sprytextfield8">
<input type="text" name="sexo2" id="sexo2" />
<span class="textfieldRequiredMsg">Obligatorio.</span><span class="textfieldMinCharsMsg">El número minimo de caracteres es
1.</span><span class="textfieldMaxCharsMsg">Excedio el número maximo de caracteres.</span></span></td>
</tr>
<tr>
<td><label for="id_partido4">ID Partido: </label></td>
<td><span id="sprytextfield9">
<input type="text" name="id_partido2" id="id_partido2" />
<span class="textfieldRequiredMsg">Obligatorio.</span><span class="textfieldInvalidFormatMsg">Formato Invalido.</span><span
class="textfieldMinCharsMsg">El número minimo de caracteres es 1.</span><span class="textfieldMaxCharsMsg">Excedio el número
maximo de caracteres.</span><span class="textfieldMinValueMsg">No puede introducir valores menores a 1.</span><span
class="textfieldMaxValueMsg">Valor no valido.</span></span></td>
</tr>
<tr>
<td>ID Cargo:</td>
<td><span id="sprytextfield13">
<label for="idcargo4"></label>
<input type="text" name="idcargo2" id="idcargo4" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span><span
class="textfieldMinCharsMsg">Minimum
number
of
characters
not
met.</span><span
class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span><span class="textfieldMinValueMsg">The entered
value is less than the minimum required.</span><span class="textfieldMaxValueMsg">The entered value is greater than the maximum
allowed.</span></span></td>
</tr>
<tr>
<td><label for="circunscripcion9">Circunscripción: </label></td>
<td><span id="sprytextfield14">
<label for="circunscripcion10"></label>
<input type="text" name="circunscripcion2" id="circunscripcion10" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span><span
class="textfieldMinCharsMsg">Minimum
number
of
characters
not
met.</span><span
class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span><span class="textfieldMinValueMsg">The entered
value is less than the minimum required.</span><span class="textfieldMaxValueMsg">The entered value is greater than the maximum
allowed.</span></span></td>
</tr>
<tr>
<td>Municipio: </td>
<td><span id="sprytextfield15">
Jair Iván Piñones García
Página 111
Sistema Administrativo De Elecciones “SADE”
<label for="municipio4"></label>
<input type="text" name="municipio2" id="municipio4" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span><span
class="textfieldMinCharsMsg">Minimum
number
of
characters
not
met.</span><span
class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span></span></td>
</tr>
<tr>
<td>Estado: </td>
<td><span id="sprytextfield16">
<label for="estado5"></label>
<input type="text" name="estado2" id="estado5" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span><span
class="textfieldMinCharsMsg">Minimum
number
of
characters
not
met.</span><span
class="textfieldMaxCharsMsg">Exceeded maximum number of characters.</span><span class="textfieldMinValueMsg">The entered
value is less than the minimum required.</span><span class="textfieldMaxValueMsg">The entered value is greater than the maximum
allowed.</span></span></td>
</tr>
<tr>
<td><input type="submit" name="Insertar2" id="Insertar2" value="Insertar Registro" /></td>
<td> </td>
</tr>
<tr> </tr>
<tr> </tr>
<tr> </tr>
<tr> </tr>
<tr> </tr>
<tr> </tr>
<tr> </tr>
<tr> </tr>
</table>
<p> </p>
<p><a href="/SADEPrueba/Segura/paneadmon.php">Regresar al menú principal.</a></p>
<input type="hidden" name="MM_update" value="form3" />
</form>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados ©, Jair Iván Piñones García 2010 Oficinas Centrales: Cerrada 28 A No. 5
Col. Santiago Atepetlac,
Delegación Gustavo A. Madero, C.P. 07640, México,D.F. </p>
<p>Este sitio se ve mejor en una resolución de 1024X768 píxeles o superior</p>
<!--fin del pie de pagina---></div>
<!--fin del contenedor--></div>
<script type="text/javascript">
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "none", {validateOn:["blur"], maxChars:50, hint:"Escriba el
Nombre Completo del Elector "});
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3", "integer", {validateOn:["blur"], hint:"Escribe la Edad del
Elector", minChars:2, maxChars:3, minValue:18});
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "none", {validateOn:["blur"], minChars:1, maxChars:1,
hint:"Escribe H para hombre y M para mujer."});
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6", "integer", {hint:"Clave del partido politico", minChars:1,
maxChars:2, minValue:1, maxValue:99, validateOn:["blur"]});
var sprytextfield7 = new Spry.Widget.ValidationTextField("sprytextfield7", "integer", {hint:"Escribe los 2 digitos del Partido",
minChars:2, maxChars:2, minValue:1, maxValue:99, validateOn:["blur"]});
var sprytextfield10 = new Spry.Widget.ValidationTextField("sprytextfield10", "integer", {hint:"Escribe el digito de la circunscripcion",
minChars:1, maxChars:1, minValue:1, maxValue:5, validateOn:["blur"]});
Jair Iván Piñones García
Página 112
var sprytextfield11 = new Spry.Widget.ValidationTextField("sprytextfield11", "integer", {hint:"Escribe los digitos para el municipio",
minChars:1, maxChars:3, validateOn:["blur"]});
var sprytextfield12 = new Spry.Widget.ValidationTextField("sprytextfield12", "integer", {hint:"Escribe los digitos del estado",
minChars:1, maxChars:2, minValue:1, maxValue:32, validateOn:["blur"]});
var sprytextfield16 = new Spry.Widget.ValidationTextField("sprytextfield16", "integer", {hint:"Escribe los digitos del estado",
minChars:1, maxChars:2, minValue:1, maxValue:32, validateOn:["blur"]});
var sprytextfield15 = new Spry.Widget.ValidationTextField("sprytextfield15", "integer", {hint:"Escribe los digitos para el municipio",
minChars:1, maxChars:3, validateOn:["blur"]});
var sprytextfield14 = new Spry.Widget.ValidationTextField("sprytextfield14", "integer", {hint:"Escribe el digito de la circunscripcion",
minChars:1, maxChars:1, minValue:1, maxValue:5, validateOn:["blur"]});
var sprytextfield13 = new Spry.Widget.ValidationTextField("sprytextfield13", "integer", {hint:"Escribe los 2 digitos del Partido",
minChars:2, maxChars:2, minValue:1, maxValue:99, validateOn:["blur"]});
var sprytextfield9 = new Spry.Widget.ValidationTextField("sprytextfield9", "integer", {hint:"Clave del partido politico", minChars:1,
maxChars:2, minValue:1, maxValue:99, validateOn:["blur"]});
var sprytextfield8 = new Spry.Widget.ValidationTextField("sprytextfield8", "none", {validateOn:["blur"], minChars:1, maxChars:1,
hint:"Escribe H para hombre y M para mujer."});
var sprytextfield = new Spry.Widget.ValidationTextField("sprytextfield", "none", {validateOn:["blur"], maxChars:50, hint:"Escriba el
Nombre Completo del Elector "});
var sprytextfield5 = new Spry.Widget.ValidationTextField("sprytextfield5", "integer", {validateOn:["blur"], hint:"Escribe la Edad del
Elector", minChars:2, maxChars:3, minValue:18});
</script>
</body>
</html>
<?php
mysql_free_result($RScandidatos);
mysql_free_result($RSelectores);
?>
Jair Iván Piñones García
Página 113
Sistema Administrativo De Elecciones “SADE”
8.1.10. CONSULTAS DE ESTADOS.
Figura 33. Diseño de la página de la consulta de los estados por clave
Código.
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
Jair Iván Piñones García
Página 114
}
}
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "s";
$MM_donotCheckaccess = "false";
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'],
$_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
Jair Iván Piñones García
Página 115
Sistema Administrativo De Elecciones “SADE”
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$currentPage = $_SERVER["PHP_SELF"];
$maxRows_RSEstados = 10;
$pageNum_RSEstados = 0;
if (isset($_GET['pageNum_RSEstados'])) {
$pageNum_RSEstados = $_GET['pageNum_RSEstados'];
}
$startRow_RSEstados = $pageNum_RSEstados * $maxRows_RSEstados;
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSEstados = "SELECT * FROM estados";
$query_limit_RSEstados = sprintf("%s LIMIT %d, %d", $query_RSEstados, $startRow_RSEstados, $maxRows_RSEstados);
$RSEstados = mysql_query($query_limit_RSEstados, $coneccion1) or die(mysql_error());
$row_RSEstados = mysql_fetch_assoc($RSEstados);
if (isset($_GET['totalRows_RSEstados'])) {
$totalRows_RSEstados = $_GET['totalRows_RSEstados'];
} else {
$all_RSEstados = mysql_query($query_RSEstados);
$totalRows_RSEstados = mysql_num_rows($all_RSEstados);
}
$totalPages_RSEstados = ceil($totalRows_RSEstados/$maxRows_RSEstados)-1;
$colname_RSelectores = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_RSelectores = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSelectores = sprintf("SELECT nombre FROM electores WHERE curp = %s", GetSQLValueString($colname_RSelectores, "text"));
$RSelectores = mysql_query($query_RSelectores, $coneccion1) or die(mysql_error());
$row_RSelectores = mysql_fetch_assoc($RSelectores);
$totalRows_RSelectores = mysql_num_rows($RSelectores);
$queryString_RSEstados = "";
Jair Iván Piñones García
Página 116
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_RSEstados") == false &&
stristr($param, "totalRows_RSEstados") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_RSEstados = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_RSEstados = sprintf("&totalRows_RSEstados=%d%s", $totalRows_RSEstados, $queryString_RSEstados);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link href="estiloforms.css" rel="stylesheet" type="text/css" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="/SADEPrueba/Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo"
width="100%" height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<ul class="nav">
<form id="form1" name="form1" method="post" action="">
<p>Bienvenido, <?php echo $row_RSelectores['nombre']; ?> </p>
<p><a href="<?php echo $logoutAction ?>">Log out</a>
</form>
</ul>
<li> <a href="#"> Entrada Provisional</a></li>
<li> <a href="#"> ¿Que es SADE¿</a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1> ESTADOS </h1>
<form id="form2" name="form2" method="post" action="">
<p> 
Mostrando registro <?php echo ($startRow_RSEstados + 1) ?>hasta <?php echo min($startRow_RSEstados + $maxRows_RSEstados,
$totalRows_RSEstados) ?> de <?php echo $totalRows_RSEstados ?> </p>
<table border="1" cellpadding="2" cellspacing="2">
<tr>
<td>estado</td>
<td>nombre</td>
<td>circunscripcion</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_RSEstados['estado']; ?></td>
<td><?php echo $row_RSEstados['nombre']; ?></td>
<td><?php echo $row_RSEstados['circunscripcion']; ?></td>
</tr>
Jair Iván Piñones García
Página 117
Sistema Administrativo De Elecciones “SADE”
<?php } while ($row_RSEstados = mysql_fetch_assoc($RSEstados)); ?>
</table>
<table border="0">
<tr>
<td><?php if ($pageNum_RSEstados > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_RSEstados=%d%s", $currentPage, 0, $queryString_RSEstados); ?>">First</a>
<?php } // Show if not first page ?></td>
<td><?php if ($pageNum_RSEstados > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_RSEstados=%d%s", $currentPage, max(0, $pageNum_RSEstados - 1),
$queryString_RSEstados); ?>">Previous</a>
<?php } // Show if not first page ?></td>
<td><?php if ($pageNum_RSEstados < $totalPages_RSEstados) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_RSEstados=%d%s", $currentPage, min($totalPages_RSEstados, $pageNum_RSEstados + 1),
$queryString_RSEstados); ?>">Next</a>
<?php } // Show if not last page ?></td>
<td><?php if ($pageNum_RSEstados < $totalPages_RSEstados) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_RSEstados=%d%s", $currentPage, $totalPages_RSEstados, $queryString_RSEstados);
?>">Last</a>
<?php } // Show if not last page ?></td>
</tr>
</table>
<a href="/SADEPrueba/Segura/consultas.php">
</p>
Regresar a consultas.</a>
</form>
</div>
<div class="piedepagina">
<p>Derechos Reservados ©, Jair Iván Piñones García 2010 Oficinas Centrales: Cerrada 28 A No. 5
Delegación Gustavo A. Madero, C.P. 07640, México,D.F. </p>
<p>Este sitio se ve mejor en una resolución de 1024X768 píxeles o superior</p>
<!--fin del pie de pagina---></div>
<!--fin del contenedor--></div>
</body>
</html>
<?php
mysql_free_result($RSEstados);
Col. Santiago Atepetlac,
mysql_free_result($RSelectores);
?>
Jair Iván Piñones García
Página 118
8.1.11. JORNADA ELECTORAL.
Figura 34. Diseño de la página para ingresar una jornada electoral
Código.
<?php require_once('../Connections/coneccion1.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "/SADEPrueba/index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
Jair Iván Piñones García
Página 119
Sistema Administrativo De Elecciones “SADE”
?>
<?php
if (!isset($_SESSION)) {
session_start();
}
$MM_authorizedUsers = "s";
$MM_donotCheckaccess = "false";
// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
// For security, start by assuming the visitor is NOT authorized.
$isValid = False;
// When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
// Therefore, we know that a user is NOT logged in if that Session variable is blank.
if (!empty($UserName)) {
// Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
// Parse the strings into arrays.
$arrUsers = Explode(",", $strUsers);
$arrGroups = Explode(",", $strGroups);
if (in_array($UserName, $arrUsers)) {
$isValid = true;
}
// Or, you may restrict access to only certain users based on their username.
if (in_array($UserGroup, $arrGroups)) {
$isValid = true;
}
if (($strUsers == "") && false) {
$isValid = true;
}
}
return $isValid;
}
$MM_restrictGoTo = "/SADEPrueba/accesorestringido.php";
if
(!((isset($_SESSION['MM_Username']))
&&
(isAuthorized("",$MM_authorizedUsers,
$_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0)
$MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<?php virtual('/SADEPrueba/Connections/coneccion1.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$_SESSION['MM_Username'],
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
Jair Iván Piñones García
Página 120
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$currentPage = $_SERVER["PHP_SELF"];
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
Jair Iván Piñones García
Página 121
Sistema Administrativo De Elecciones “SADE”
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
$insertSQL = sprintf("INSERT INTO elecciones (idtipoeleccion, idcargo, fecha) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['tipoeleccion'], "int"),
GetSQLValueString($_POST['tipocargo'], "int"),
GetSQLValueString($_POST['fecha'], "date"));
mysql_select_db($database_coneccion1, $coneccion1);
$Result1 = mysql_query($insertSQL, $coneccion1) or die(mysql_error());
}
$maxRows_RSEleccion = 10;
$pageNum_RSEleccion = 0;
if (isset($_GET['pageNum_RSEleccion'])) {
$pageNum_RSEleccion = $_GET['pageNum_RSEleccion'];
}
$startRow_RSEleccion = $pageNum_RSEleccion * $maxRows_RSEleccion;
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSEleccion = "SELECT * FROM elecciones";
$query_limit_RSEleccion = sprintf("%s LIMIT %d, %d", $query_RSEleccion, $startRow_RSEleccion, $maxRows_RSEleccion);
$RSEleccion = mysql_query($query_limit_RSEleccion, $coneccion1) or die(mysql_error());
$row_RSEleccion = mysql_fetch_assoc($RSEleccion);
if (isset($_GET['totalRows_RSEleccion'])) {
$totalRows_RSEleccion = $_GET['totalRows_RSEleccion'];
} else {
$all_RSEleccion = mysql_query($query_RSEleccion);
$totalRows_RSEleccion = mysql_num_rows($all_RSEleccion);
}
$totalPages_RSEleccion = ceil($totalRows_RSEleccion/$maxRows_RSEleccion)-1;
mysql_select_db($database_coneccion1, $coneccion1);
$query_RStipoeleccion = "SELECT * FROM tipo_eleccion";
$RStipoeleccion = mysql_query($query_RStipoeleccion, $coneccion1) or die(mysql_error());
$row_RStipoeleccion = mysql_fetch_assoc($RStipoeleccion);
$totalRows_RStipoeleccion = mysql_num_rows($RStipoeleccion);
mysql_select_db($database_coneccion1, $coneccion1);
$query_RScargo = "SELECT * FROM tipo_cargo";
$RScargo = mysql_query($query_RScargo, $coneccion1) or die(mysql_error());
$row_RScargo = mysql_fetch_assoc($RScargo);
$totalRows_RScargo = mysql_num_rows($RScargo);
$colname_RSelectores = "-1";
if (isset($_SESSION['MM_Username'])) {
$colname_RSelectores = $_SESSION['MM_Username'];
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RSelectores = sprintf("SELECT nombre FROM electores WHERE curp = %s", GetSQLValueString($colname_RSelectores, "text"));
$RSelectores = mysql_query($query_RSelectores, $coneccion1) or die(mysql_error());
$row_RSelectores = mysql_fetch_assoc($RSelectores);
$totalRows_RSelectores = mysql_num_rows($RSelectores);
$queryString_RSEleccion = "";
Jair Iván Piñones García
Página 122
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_RSEleccion") == false &&
stristr($param, "totalRows_RSEleccion") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_RSEleccion = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_RSEleccion = sprintf("&totalRows_RSEleccion=%d%s", $totalRows_RSEleccion, $queryString_RSEleccion);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="/SADEPrueba/Segura/estiloforms.css" rel="stylesheet" type="text/css" />
<script src="/SADEPrueba/SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="/SADEPrueba/SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="../Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo" width="1209"
height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<ul class="nav">
<form id="form1" name="form1" method="post" action="">
<p>Bienvenido, <?php echo $row_RSelectores['nombre']; ?> </p>
<p><a href="<?php echo $logoutAction ?>">Log out</a>
</form>
</ul>
<li> <a href="Segura/paneadmon.php"> Entrada Provisional</a></li>
<li> <a href="#"> ¿Que es SADE? </a></li>
<li> <a href="#"> Consulta de Resultados</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1>JORNADA ELECTORAL</h1>
<h3>En esta seccion se crea y administra una jornada electoral</h3>
<form id="fecha" name="form2" method="POST" action="<?php echo $editFormAction; ?>">
<p>
<label for="tipocargo"></label>
<label for="tipoeleccion"></label>
Tipo de Elección
<select name="tipoeleccion" id="tipoeleccion">
<?php
do {
?>
<option value="<?php echo $row_RStipoeleccion['idtipoeleccion']?>"<?php if (!(strcmp($row_RStipoeleccion['idtipoeleccion'],
$row_RStipoeleccion['idtipoeleccion']))) {echo "selected=\"selected\"";} ?>><?php echo $row_RStipoeleccion['descripcion']?></option>
<?php
} while ($row_RStipoeleccion = mysql_fetch_assoc($RStipoeleccion));
$rows = mysql_num_rows($RStipoeleccion);
Jair Iván Piñones García
Página 123
Sistema Administrativo De Elecciones “SADE”
if($rows > 0) {
mysql_data_seek($RStipoeleccion, 0);
$row_RStipoeleccion = mysql_fetch_assoc($RStipoeleccion);
}
?>
</select>
Tipo de cargo:
<select name="tipocargo" size="1" id="tipocargo">
<?php
do {
?>
<option value="<?php echo $row_RScargo['idcargo']?>"<?php if (!(strcmp($row_RScargo['idcargo'], $row_RScargo['idcargo'])))
{echo "selected=\"selected\"";} ?>><?php echo $row_RScargo['nombrecargo']?></option>
<?php
} while ($row_RScargo = mysql_fetch_assoc($RScargo));
$rows = mysql_num_rows($RScargo);
if($rows > 0) {
mysql_data_seek($RScargo, 0);
$row_RScargo = mysql_fetch_assoc($RScargo);
}
?>
</select>
Fecha:
<label for="fecha"></label>
<label for="fecha"></label>
<span id="sprytextfield1">
<label for="fecha"></label>
<input name="fecha" type="text" id="fecha" value="<?php echo $row_RSEleccion['fecha']; ?>" />
<span
class="textfieldRequiredMsg">A
value
is
required.</span><span
class="textfieldInvalidFormatMsg">Invalid
format.</span></span> </p>
<p>
<input type="submit" name="registrar" id="registrar" value="Registrar" />
</p>
<p>Jornadas </p>
<table border="1" cellpadding="2" cellspacing="2">
<tr>
<td>claveideleccion</td>
<td>idtipoeleccion</td>
<td>idcargo</td>
<td>fecha</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_RSEleccion['claveideleccion']; ?></td>
<td><?php echo $row_RSEleccion['idtipoeleccion']; ?></td>
<td><?php echo $row_RSEleccion['idcargo']; ?></td>
<td><?php echo $row_RSEleccion['fecha']; ?></td>
</tr>
<?php } while ($row_RSEleccion = mysql_fetch_assoc($RSEleccion)); ?>
</table>
<table border="0">
<tr>
<td><?php if ($pageNum_RSEleccion > 0) { // Show if not first page ?>
<a
href="<?php
printf("%s?pageNum_RSEleccion=%d%s",
$currentPage,
0,
$queryString_RSEleccion);
?>"><img
src="/SADEPrueba/Imagenes/SADE/First.gif" /></a>
<?php } // Show if not first page ?></td>
<td><?php if ($pageNum_RSEleccion > 0) { // Show if not first page ?>
Jair Iván Piñones García
Página 124
<a
href="<?php
printf("%s?pageNum_RSEleccion=%d%s",
$currentPage,
max(0,
$pageNum_RSEleccion
1),
$queryString_RSEleccion); ?>"><img src="/SADEPrueba/Imagenes/SADE/Previous.gif" /></a>
<?php } // Show if not first page ?></td>
<td><?php if ($pageNum_RSEleccion < $totalPages_RSEleccion) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_RSEleccion=%d%s", $currentPage, min($totalPages_RSEleccion, $pageNum_RSEleccion + 1),
$queryString_RSEleccion); ?>"><img src="/SADEPrueba/Imagenes/SADE/Next.gif" /></a>
<?php } // Show if not last page ?></td>
<td><?php if ($pageNum_RSEleccion < $totalPages_RSEleccion) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_RSEleccion=%d%s", $currentPage, $totalPages_RSEleccion, $queryString_RSEleccion);
?>"><img src="/SADEPrueba/Imagenes/SADE/Last.gif" /></a>
<?php } // Show if not last page ?></td>
</tr>
</table>
</p>
<p><a href="/SADEPrueba/Segura/paneadmon.php">Regresar al menú Principal</a></p>
<p>
<input type="hidden" name="MM_insert" value="form2" />
</p>
</form>
<p> </p>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados ©, Jair Iván Piñones García 2010 Oficinas Centrales: Cerrada 28 A No. 5
Col. Santiago Atepetlac,
Delegación Gustavo A. Madero, C.P. 07640, México,D.F. </p>
<p>Este sitio se ve mejor en una resolución de 1024X768 píxeles o superior<!--fin del pie de pagina---></p>
</div>
<!--fin del contenedor--></div>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "date", {format:"yyyy-mm-dd", hint:"AAAA-MM-DD",
validateOn:["blur"]});
</script>
</body>
</html>
<?php
mysql_free_result($RSEleccion);
mysql_free_result($RStipoeleccion);
mysql_free_result($RScargo);
mysql_free_result($RSelectores);
?>
Jair Iván Piñones García
Página 125
Sistema Administrativo De Elecciones “SADE”
8.1.12. RESULTADOS.
Figura 35. Diseño de la Página de Resultados
Código.
<?php virtual('/SADEPrueba/Connections/coneccion1.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
Jair Iván Piñones García
Página 126
break;
}
return $theValue;
}
}
mysql_select_db($database_coneccion1, $coneccion1);
$query_RScandidatos = "SELECT candidatos.nombre, partidopolitico.Acronimo, candidatos.votos FROM candidatos, partidopolitico
WHERE partidopolitico.idpartido=candidatos.idpartido AND candidatos.idcargo=1";
$RScandidatos = mysql_query($query_RScandidatos, $coneccion1) or die(mysql_error());
$row_RScandidatos = mysql_fetch_assoc($RScandidatos);
$totalRows_RScandidatos = mysql_num_rows($RScandidatos);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="/SADEPrueba/Segura/estiloforms.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="contenedor">
<div class="encabezado"><a href="#"><img src="Imagenes/SADE/SADE.gif" alt="Inserrta logo" name="logotipo" width="100%"
height="151" style="background:#FFF; display:block;" /></a>
<!--Fin del encabezado---> </div>
<div class="sidebar1">
<p>
<li><a href="index.php">Regresar</a></li>
<p><!--fin de la barra---></div>
<div class="contenido">
<h1>Resultados de Eleccion de Presidente de la Republica</h1>
<p><img src="resultados.php"/>.</p>
<p>Candidatos:</p>
<table border="1" cellpadding="2" cellspacing="2">
<tr>
<td><strong><em>Nombre del Candidato</em></strong></td>
<td><strong><em>Partido Politico</em></strong></td>
<td><strong><em>No. Total de Votos</em></strong></td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_RScandidatos['nombre']; ?></td>
<td><?php echo $row_RScandidatos['Acronimo']; ?></td>
<td><?php echo $row_RScandidatos['votos']; ?></td>
</tr>
<?php } while ($row_RScandidatos = mysql_fetch_assoc($RScandidatos)); ?>
</table>
<!--fin del contenido---></div>
<div class="piedepagina">
<p>Derechos Reservados �, Jair Iv�n Pi�ones Garc�a 2010 Oficinas Centrales: Cerrada 28 A No. 5
Col. Santiago Atepetlac,
Delegaci�n Gustavo A. Madero, C.P. 07640, M�xico,D.F. </p>
<p>Este sitio se ve mejor en una resoluci�n de 1024X768 p�xeles o superior<!--fin del pie de pagina---></p>
</div>
<!--fin del contenedor--></div>
</body>
Jair Iván Piñones García
Página 127
Sistema Administrativo De Elecciones “SADE”
</html>
<?php
mysql_free_result($RScandidatos);
?>
Jair Iván Piñones García
Página 128
9. Referencias







“Información Básica Sistema electoral Mexicano” en IFE Instituto Federal Electoral [En
Línea]. México, disponible en:
http://www.ife.org.mx/portal/site/ifev2/Informacion_Electoral/#1
“Elecciones Federales de México” en Wikipedia La enciclopedia Libre [En Línea]. México,
disponible en: http://es.wikipedia.org/wiki/Elecciones_federales_de_M%C3%A9xico
Lauraprats “Elecciones: ¿Cuánto cuesta un voto en México?” en Pateando Piedras [En
Línea]. México, disponible en: http://www.pateandopiedras.com/?p=24751
Bruce Schneier (2001) “Sistemas de Votación Electrónicos” en Red de conocimientos
electorales” [En línea] Disponible en:
http://aceproject.org/ace-es/topics/et/eth/eth02/eth02b/onePage
(2010) “¿Qué es Dreamweaver” en Adobe Dreamweaver CS5 [En línea] Disponible en:
http://www.adobe.com/es/products/dreamweaver/whatisdreamweaver/
“Cascading Style Sheets” en W3C [En línea] Disponible en:
http://www.w3.org/Style/CSS
“What is PHP?” en PHP [En línea] Disponible en:
http://www.php.net/
Jair Iván Piñones García
Página 129
Descargar