yo gestiono a los usuarios de la sigiente forma
Código sql:
Ver originalCREATE TABLE IF NOT EXISTS `usuarios` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`grupo_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`login` VARCHAR(45) NOT NULL DEFAULT '',
`password` VARCHAR(45) NOT NULL DEFAULT '',
`status` INT(1) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
CREATE TABLE IF NOT EXISTS `grupos` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`grupo` VARCHAR(45) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
y gestiono todo a travez de esta clase
Código php:
Ver originalclass usuario{
var $id=null;
var $init = null;
var $getInfo = false;
var $isLogin = false;
/**
* Constructor de la clase, necesaria para la comprabacion interna
* setea la variable $init para comprobar que la clase esta instanciada
* para acciones publicas no se requiere la variable
* @return Void
* @access public
* @static
*/
function usuario(){
$this->init = true;
}
/**
* logea al Usuario, realiza una comprobacion devuelve true en caso de exito
* @param $loginInfo Array con los datos para el logueo
* @return Void
* @access public
* @static
*/
function login ($loginInfo){
if($this->init === true){
if($this->checkLogin($loginInfo)==true){
$this->getInfo = true;
$this->id = $this->getThisId($loginInfo);
$this->getInfo = false;
$this->isLogin = true;
$_SESSION['login']=$this->id;
return true;
}else{
return false;
}
}else{
return 'no se inicio variable';
}
}
/**
* Destruye la sesion
* @param $loginInfo Array con los datos para el logueo
* no se requiere instanciar la clase para desloguearse
* @return Void
* @access public
* @public
*/
function logout(){
$this->isLogin = false;
}
/*
*
* FUNCIONES para chequear informacion
*
*
* * */
/**
* Comprueba que exista el usuario y que coincida la contraseña
* en caso de exito devuelve true
* @param $loginInfo Array con los datos para el logueo
* @return Void
* @access public
* @static
*/
function checkLogin($loginInfo){
if($this->init === true){
global $DbConn;
$sql = 'SELECT COUNT(id) as num FROM usuarios WHERE login="'.$user.'" AND password="'.$pass.'"';
$dat = $DbConn->fetchArray($DbConn->query($sql));
if ($dat['num'] == 1){
return true;
}else{
return false;
}
}
}
/*
*
* FUNCIONES para recuperar informacion
*
*
* * */
/**
* Devuelve el id del usuario comprueba si la variable getInfo es true
* @param $loginInfo Array se necesita el usuario
* @return Void
* @access public
* @static
*/
function getThisId($loginInfo){
if($this->init === true){
if($this->getInfo === true){
global $DbConn;
$sql = 'SELECT id AS request FROM usuarios WHERE login = "'.$user.'"';
$dat = $DbConn->fetchArray($DbConn->query($sql));
return $dat['request'];
}
}
}
/**
* Devuelve el nombre del usuario
* solamente si el usuario esta logueado
* @param $loginInfo Array se necesita el usuario
* @return Void
* @access public
* @static
*/
function getThisNombre(){
if($this->isLogin()){
$this->id = $_SESSION['login'];
if($this->id != null){
global $DbConn;
$sql = 'SELECT login AS request FROM usuarios WHERE id='.$this->id;
$dat = $DbConn->fetchArray($DbConn->query($sql));
return $dat['request'];
}
}
}
/**
* Devuelve el nombre del grupo del usuario
* solamente si el usuario esta logueado
* @param $loginInfo Array se necesita el usuario
* @return Void
* @access public
* @static
*/
function getThisGrupo(){
$this->id = $_SESSION['login'];
if($this->id != null){
global $DbConn;
$sql = 'SELECT grupo AS request
FROM usuarios AS us
LEFT JOIN grupos AS gr
ON us.grupo_id = gr.id
WHERE us.id = '. $this->id;
$dat = $DbConn->fetchArray($DbConn->query($sql));
return $dat['request'];
}
}
function isLogin(){
if(isset($_SESSION['login'])){ return true;
}else{
return false;
}
}
}
en un archivo de configuracion agrego lo siguiente
Código php:
Ver original
//definimos las CONSTANTES para la conexion mysql
define('DB_HOST','localhost');
//incluimos las clases
include 'class/odbcon.php';
include 'class/class.usuarios.php';
//creamos los objetos globales, usActual y DbConn;
global $usActual;
$usActual = new usuario();
global $DbConn;
$DbConn = new DbConn(DB_HOST,DB_USER,DB_PASS);
$DbConn -> connect();
$DbConn -> selectDb(DB_NAME);
esto es porque el usuario siempre va a ser el mismo que esta en la sesion web
la clase odbcon se encuentra en este
link
proceso de informacion para el logueo
Código php:
Ver original<?php
//incluimos el archivo de configuracion
include 'config.php';
//lamamos a la global usActual para hacer las comprobaciones
global $usActual;
$urlRedirect = 'ejemplo.php'; // url a donde redireccionamos
//si es esta definida la variable $_POST['login']
if($_POST['login']){
// comrpobamos que el usuario y la contraseña sean correctas con la funcion usuario->login, que devolvera true si esta todo correcto, guardando la session
if($usActual->login(array($_POST['login'],$_POST['password']))){
echo '<b>Conexion exitosa. Redireccionando a '.$urlRedirect.'...</b>';
echo '
<script>
// redireccionamos ne 3 segundos para que se logre ver el mensaje publuicado arriba
setTimeout("document.location.href=\''.$urlRedirect.'\'",3000);
</script>';
}else{
echo 'usuario o contraseña incorrecta, vuelva a intentarlo';
echo '
<script>
// redireccionamos ne 3 segundos para que se logre ver el mensaje publuicado arriba
setTimeout("document.location.href=\''.$urlRedirect.'\'",3000);
</script>';
}
}
if($_GET['accion']=='logout'){
$usActual->logout();
echo '<b>Desconexion exitosa. Redireccionando a '.$urlRedirect.'...</b>';
echo '
<script>
// redireccionamos ne 3 segundos para que se logre ver el mensaje publuicado arriba
setTimeout("document.location.href=\''.$urlRedirect.'\'",3000);
</script>';
}