23 noviembre 2010

Detrás de cámaras - Inbox

Para los que llegaron a ver el vídeo de presentación de mi Proyecto de Medio Curso y se preguntaron como hice muchas cosas, bueno aquí les mostraré con lo que empece en mi código, no fue fácil, en ese momento trabaje mucho a prueba y error, dado a mi poca experiencia, tenía que buscar muy buenos tutoriales para lograr mi objetivo.

Enseguida muestro partes de mi código para que vean parte de su funcionamiento.

El siguiente fragmento de mi código es del archivo index.html:
<h2>Inicio de sesi&oacute;n</h2>
<form name="acceso" action="cgi-bin/home.py" method="post">
 <p>
  Cuenta:<br/>
  <input class="box" type="text" name="usuario" maxlength="24" id="foco"/>
  <br/>
  Contrase&ntilde;a:<br/>
  <input class="box" type="password" name="contra" maxlength="10"/>
 </p>
 <p>
  <input class="boton" type="submit" value="Entrar"/>
 </p>
</form>

Como pueden observar es un formulario donde pido que se ingrese el Usuario y su respectiva Contraseña. Estos datos una vez ingresados y después de haber presionado el botón Entrar son enviados a la aplicación home.py, que es ejecutada mediante el CGI.


Fragmento del archivo home.py:
#!/usr/bin/python

import cgi

def main():

    entrada = cgi.FieldStorage()
    if entrada.has_key("usuario") and entrada.has_key("contra"):
 arch = open("usuarios.dat", "r")
 for line in arch:
     linea = line.split("~")
     user = linea[0]
     admin = linea[1]
     name = linea[2]
     lastn = linea[3]
     country = linea[4]
     if user == entrada["usuario"].value and admin == entrada["contra"].value:
  bandera = 1
  break
     else:
  bandera = 0
 arch.close()
    else:
 bandera = 0

    if bandera == 1:
        [se imprime una página html con el contenido del usuario]
    if bandera == 0:
        [se imprime la misma página de index, pero con un mensaje de error]

Aquí es donde se reciben los datos enviados desde la página de inicio. Primero se verifica que los dos campos han sido llenados, sino se cumple esa condición a la variable bandera le coloco el valor de 0, lo cual imprimiría el mismo index, pero con un mensaje de error.

En caso de que si fueron llenados los dos campos de datos, se abre el archivo de usuarios.dat:
admin~00110011~Administrador~Principal~UBUNTU~
hugo_donald~12345678~Hugo~Donald~MEXICO~
paco_donald~1445566~Paco~Donald~EUA~
luis_donald~123abcd~Luis~Donald~ARGENTINA~

El archivo lo abro solo con el fin de lectura, para leer linea por linea y verificar si existe el usuario y si es así también verifica si coincide su contraseña. Como en el archivo tengo por cada línea los datos del usuario separados con el carácter "~", antes de la condición que verifica el usuario y contraseña, almaceno cada dato del usuario en una variable, para así comparar esta variable con el dato recibido del formulario.

Si la condición se cumple, esto es que el usuario y contraseña ingresados en el formulario, coinciden con datos de alguno de los usuarios que se tienen registrados, la variable bandera toma el valor de 1, lo cual hará que se imprima la página de home para el usuario, que es aquí donde se muestran sus mensajes nuevos.

1 comentario: