En esta ocacion haremos un login con ajax. A continuacion los detalles. Base de Datos, crea la BD sistema y en ella ejecutar el siguiente script:
Código
CREATE TABLE `personal` ( `idpersonal` varchar(8) NOT NULL, `nombres` varchar(45) NOT NULL, `apellidos` varchar(45) NOT NULL, `clave` varchar(45) NOT NULL, `imagen` text, `sexo` char(1) default NULL, `estado` char(1) default NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Insertar registros a discrecion xD
Código
* En este caso por ser un ejemplo no se usar el md5 (Es recomendable usarlo)
INSERT INTO `personal` VALUES ('41338110', 'Juar Carlos', 'Malca Pereda', 'clave1' ,'1982-02-23', '2009-04-28', NULL, '0', '1'); INSERT INTO `personal` VALUES ('41352619', 'Yessenia Clariza', 'Rodas Correo', 'clave2' , '1989-01-09', '2009-04-28', NULL, '1', '1'); INSERT INTO `personal` VALUES ('42751388', 'Pedro Ricardo', 'Mariano Jimenz', 'clave3' , '1984-12-20', '2009-04-28', NULL, '1', '1');
Ahora la estructura de la pagina sera la siguiente:
Citar
Appserver/
|--- www/
|--- web/
| |--- ajax/ (Js ^^', alquien se dio cuenta?)
| | |--- home.js (ajax)
| |--- clases/ (clases php ^^')
| | |--- mysql.php (clase de conexion)
| | |--- personal.php (clase para personal)
| | |--- ingreso.php (clase funciones)
| |--- imagenes/ (imagenes)
| | |--- loader.gif (icono cargando)
| |--- index.php (pagina de inicio)
|--- www/
|--- web/
| |--- ajax/ (Js ^^', alquien se dio cuenta?)
| | |--- home.js (ajax)
| |--- clases/ (clases php ^^')
| | |--- mysql.php (clase de conexion)
| | |--- personal.php (clase para personal)
| | |--- ingreso.php (clase funciones)
| |--- imagenes/ (imagenes)
| | |--- loader.gif (icono cargando)
| |--- index.php (pagina de inicio)
Imagen loader.gif
Empezemos con la clase para la conexion:
www/web/clases/mysql.php
Código
<? //Clase Mysql, se usa para la conexion a la Base de Datos class Mysql { var $conexion; //inicia conexion con el servidor function conecta() { { $ser = "localhost"; //servidor $usr = "root"; //usuario $pwd = "root"; //password $bbd = "sistema"; //base de datos } } //realiza la consulta recepcionada function consulta($consulta) { if(!$resultado) { exit; } return $resultado; } //devuelve un vector de la consulta function vector($consulta) { } //retorna el numero de registros para la consulta function filas($consulta) { } } ?>
Clase para verificacion de personal:
www/web/clases/personal.php
Código
<? class Persona { var $p_idpersona; var $p_nombre; var $p_apellido; var $p_persona; var $p_imagen; var $p_sexo; var $p_fecnac; var $p_estado; var $p_existe; //function que define si el idpersona existe function set_idpersona($codigo,$clave) { include("mysql.php"); $sql = "select * from personal where idpersonal='$codigo' and clave='$clave'"; $con->conecta(); $res = $con->consulta($sql); $num = $con->filas($res); if($num>0) { $row = $con->vector($res); $this->p_idpersona=$codigo; $this->p_nombre=$row['nombres']; $this->p_apellido=$row['apellidos']; $this->p_imagen=$row['imagen']; $this->p_sexo=$row['sexo']; $this->p_estado=$row['estado']; $this->p_fecnac=$row['fecnac']; $this->p_persona=$this->p_apellido.', '.$this->p_nombre; $this->p_existe=1; } else { $this->p_existe=0; } } //Retorna true si el usuario existe, caso contrario false function get_existe() { return $this->p_existe; } //Retorna el codigo de la persona function get_idpersona() { return $this->p_idpersona; } //Retorna el nombre de la persona function get_nombre() { return $this->p_nombre; } //Retorna el apellido de la persona function get_apellido() { return $this->p_apellido; } //Retorna el sexo de la persona function get_sexo() { return $this->p_sexo; } //Retorna la imagen de la persona function get_imagen() { return $this->p_imagen; } //Retorna la fecha de nacimiento de la persona function get_fecnac() { return $this->p_fecnac; } //Retorna el estado de la persona function get_estado() { return $this->p_estado; } //Retorna el nombre completo de la persona function get_persona() { return $this->p_persona; } } ?>
Clase para el login, es llamado por la funcion ajax en javascript:
www/web/clases/ingreso.php
Código
<? include("persona.php"); $usuario = $_REQUEST['usu']; $clave = $_REQUEST['pwd']; $usu = new Persona(); $usu->set_idpersona($usuario,$clave); $est = $usu->get_existe(); if($est==1){ ?> Llamar a funcion ‫javascript que llame a la pagina principal. APORTE PARA LA COMUNIDAD FORO.ELHACKER.NET saludos. <? }else{ ?> Usuario <input type="text" id="usr" name="usr" maxlength="8" /><br> clave <input type="text" id="pwd" name="pwd" maxlength="25" /><br> <input type="button" value="Ingresar" onclick="verifica();"/><br><br> <center>Datos incorrectos</center> <? } ?>
Ajax, se llama desde el index:
www/web/ajax/home.js
Código
//Funcion para ajax function NewAjax() { var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } //Funcion para el login function verifica() { var usu = document.getElementById('usr'); var pwd = document.getElementById('pwd'); var div = document.getElementById('cuerpo'); var ajax = NewAjax(); ajax.open("POST", 'clases/ingreso.php?usu='+usu.value+'&pwd='+pwd.value,true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { var ok = ajax.responseText; div.innerHTML = ok; } else { div.innerHTML = "<img src='imagenes/loader.gif'><br><br><font color='#666666'>Autentificando<br>Espere un momento por favor.</font>"; } } ajax.send(null); }
Pagina index, donde se efectura el login
www/web/index.php
Código
<!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" /> </head> <body> <div id='cuerpo' name='cuerpo'> <input type="button" value="Ingresar" onclick="verifica();"/> </div> </body> </html>
Archivo a descargar: Click
El file no contiene la Bd (esta se crea independientemente, ver inicio del hilo)
Sin mas que decirles me despido (en realidad ahora estoy mas aburrido que cuando comence a tipear ^^' ... ), espero que esto le sea util a alquien, como siempre tambien decir: si encuentran algun error no duden en avisarme y lo corrijo.
Cuidense y estamos viendonos pronto.
Hadess_inf