lunes, julio 16, 2007

Control Login usando MySQL

Estuve el fin de semana haciendo diversas pruebas con el control login de asp.net, primero que nada la verdad es que el membership provider de microsoft, estará muy fácil de instalar y usar pero esta muy limitado, necesitas montar toda la aplicacion alrededor de las tablas que microsoft decide para la administración de los usuarios, aún cuando la estructura es buena, en muchas ocasiones esa misma tabla tiene que llevar otro tipo de información, pude haber hecho una tabla que se manejara de forma paralela para el resto de la información de estos usuarios, pero uno es necio de verdad, lo que quiero es usar mi tabla, además quiero que este en mysql (solo me falta que me ponga otra vez de necio y montar la aplicación sobre linux).

Lo primero fue crear mi tabla en mysql, solo pondré la estructura necesaria para el ejemplo:

CREATE TABLE `medicos` (
`IDMedico` int(10) NOT NULL auto_increment,
`Titulo` varchar(50) character set latin1 default NULL,
`Nombre` varchar(50) character set latin1 default NULL,
`ApellidoPaterno` varchar(50) character set latin1 default NULL,
`ApellidoMaterno` varchar(50) character set latin1 default NULL,
`Email` varchar(50) character set latin1 default NULL,
`Password` varchar(50) character set latin1 NOT NULL default '0',
PRIMARY KEY (`IDMedico`),
KEY `Password` (`Password`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=2 ;

CREATE TABLE

En esta ocasión decidí conectarme a MySQL mediante el connector de .Net (funciona mejor que el ByteFX) las instrucciones para instalar este componente estan en http://dev.mysql.com/downloads/connector/net/. El namespace de este componente es MySql.Data.MySqlClient, la cual tenemos que agregar como una referencia al proyecto en el que estamos, en realidad no se porque esto no se dio de manera automática cuando realice la instalación, pero lo resolví agregándolo.




A continuación creamos un archivo con una clase para la autenticación de los usuarios:

Imports Microsoft.VisualBasic
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports MySql.Data.MySqlClient


Public Class AutenticarMedico
Public Function Autenticar(ByVal username As String, ByVal password As String) As Boolean
Dim conn As New MySqlConnection
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New Data.DataTable
Dim SQL As String
Dim opcion As Boolean


SQL = "SELECT * FROM Medicos WHERE username='" + username + "' AND Password='" + password + "';"

conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("emConnectionString").ConnectionString

conn.Open()

myCommand.Connection = conn
myCommand.CommandText = SQL

myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)

If (myData Is DBNull.Value Or myData.Rows.Count > 0) Then
opcion = True
Else
opcion = False
End If

conn.Close()
Return opcion
End Function
End Class

Guardamos nuestro archivo anterior. Creamos uno nuevo con extensión aspx, es decir un web form, agregamos el control Login de nuestra caja de herramientas, opcionalmente le damos algún formato, escogemos el control para agregarle el método on_authenticate el cual en lugar de irse a membership como omisión tendría que realizar la comprobación hacia nuestro mysql mediante las siguientes instrucciones:

Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs)
Dim verificarUsuario As New AutenticarMedico
Dim usuario As String = Login1.UserName
Dim password As String = Login1.Password
Dim resultado As Boolean

resultado = verificarUsuario.Autenticar(usuario, password)

e.Authenticated = resultado

End Sub

A continuación una breve video en youtube:


Como resultado tenemos el control en una pagina que se autentifica contra la base de datos de mysql.
Listo!

Mi nuevo esquema básico de html

En los ultimos meses he desarrollado sitios web, basados en un sistema basico de divs en combinacion con CSS, esto no me ha facilitado el diseño, pues despues de años de usar tablas y formas mas rudimentarias por asi decirlo, el uso de CSS para el diseño se torna laborioso, pero al mismo tiempo se logra tener un mejor diseño y la semantica del html tiene sentido.

Lo cierto tambien es que tenia que renovar mis practicas de construccion de paginas y he terminado por convercerme en usar divs. No se si en las escuelas actualmente enseñan estas practicas. Veo que por lo menos en México y en particular el diseño que reviso en Veracruz, sigue usando las clasicas tablas y paginas hechas con imagenes divididas.

Ademas, he reducido mi uso de etiquetas a unas cuantas, recuerdo que solia utilizar dl, blockquote, hasta el famoso marquee de ie4 lo llegue a usar, pero en realidad pierden el sentido cuando aplicamos solo las etiquetas div, span, ul, li con el uso apropiado de css.

Por otra parte en el ultimo proyecto me obligué a crear una unica plantilla de html y los diseños estan por completo realizados con css, los ejemplos estaran disponible proximamente.

Sin mas que decir, aqui mi esquema basico:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/TR/html4/strict.dtd">

<head>

<title>Titulo del Sitio Web</title>

<link rel="stylesheet" type="text/css" href="estilo.css" />

<meta name="keywords" content="HTML, DHTML, CSS, XML, XHTML, JavaScript, VBScript" />

<meta name="description" content="Free Web tutorials on HTML, CSS, XML, and XHTML" />

</head>

<body>

<div id="cuerpo">

<div id="encabezado">

<div id="logo"></div><div id="eslogan"></div>

</div>

<div id="menu">

<ul>

<li><a href="index.html">Inicio</a></li>

<li><a href="empres.html">Nuestra empresa</a></li>

<li><a href="productos.html">Productos</a></li>

<li><a href="servicios.html">Servicios</a></li>

<li><a href="clientes.html">Portafolio clientes</a></li>

<li><a href="contacto.html">Contacto</a></li>

</ul>

</div>

<div id="contenido">

<h1 id="titulo">Bienvenido a nuestro sitio</h1>

<h2 id="subtitlo">por webmaster@llanura.com</h2>

<p id="parrafo">Hola mundo</p>

</div>

<div id="piedepagina">

<address id="direccion">Veracruz, Ver.</address>

</div>

</div>

</body>

</html>

La estructura anterior permite crear cualquier diseño:



Listo!

Enlace Veracruzano - Wikis

Muchas gracias a Enlace Veracruzano por su invitación a participar como un colaborador en su revista de este mes de julio con el artículo "WIKIS", el cual estoy reproduciendo en las siguientes lineas:

 

La palabra WIKI-WIKI proviene de la lengua hawaiana que significa “rápido”, pero en el mundo Web, esta palabra se refiere a la creación de contenidos y sitios Web colaborativos. Tal vez el mejor ejemplo de este tipo de aplicaciones es Wikipedia.org, un esfuerzo mundial por tener la mejor enciclopedia en Internet. El soporte para este sitio es precisamente este tipo de herramientas, las cuales permiten que cualquier usuario con permisos pueda agregar y/o modificar más información.

En el caso de Wikipedia.org, cualquier usuario puede registrarse de forma gratuita y colaborar con los documentos que se encuentran en línea, y ciertamente se esta volviendo la herramienta educativa mas importante en el Web. Mucha de la información se encuentra en idioma ingles, pero el mayor crecimiento se esta dando en otras lenguas como el alemán, chino y español. Pero existen más de 250 lenguas usadas en Wikipedia.org entre ellas el Náhuatl (nah.wikipedia.org).

Actualmente en Internet muchos desarrollos de software, están usando algún Wiki para crear manuales y documentación relacionada con estos productos. Una ventaja de este tipo de utilerías Web es la gran sencillez con el que se puede crear contenido de una manera rápida (wiki-wiki). Pero inclusive, permiten que los usuarios y clientes de este producto, que van encontrando nuevos usos a sus productos, pongan en la documentación estos ejemplos.

Además del claro ejemplo de Wikipedia, los wikis educativos permiten que en una escuela, colegio o universidad, las clases impartidas sean revisadas no solo por los maestros y estudiantes, sino que permiten que padres de familia puedan tener un rol mas activo en la educación, al contribuir con su propia experiencia en ejemplos de diversas materias.

Ahora bien, en el ámbito empresarial el uso de un Wiki en una intranet permite a una organización:

  • Planear proyectos de desarrollos
  • Crear una base de conocimientos
  • Implementar sistemas de flujos
  • Registro y control de operaciones

Por ejemplo, un Wiki funciona de manera excepcional en una empresa con mucha rotación de personal, al permitir que los manuales de operación y la base de conocimiento de los diferentes puestos en una organización se mantengan en un repositorio con toda la información necesaria, logrando que un nuevo empleado se documente de forma ágil, sobre los procesos de la empresa

Los Wikis no sólo funcionan para la administración de texto algunos de ellos están orientados, hacia la manipulación de imágenes, de música y de video. Actualmente existen más de 50 productos que se distinguen por la variedad de precios, lenguaje en que están desarrollados, requerimientos de sistema, etc., un buen sitio web para comparar cualquiera de estos productos es www.wikimatrix.org.