Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] código de inicio para usuarios

Estas en el tema de código de inicio para usuarios en el foro de PHP en Foros del Web. Saludos, Espero tener una respuesta con respecto a mi problema, estoy aprendiendo a programar php y estoy haciendo un inicio de sesión para diferentes permisos ...
  #1 (permalink)  
Antiguo 25/07/2013, 08:59
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta código de inicio para usuarios

Saludos, Espero tener una respuesta con respecto a mi problema, estoy aprendiendo a programar php y estoy haciendo un inicio de sesión para diferentes permisos para usuarios mi código es el siguiente:


Código:
<?php
session_start();
include_once "conexion.php";
function verificar_login($user,$password,&$result) {
$password = mysql_real_escape_string($password);
    $sql = "SELECT * FROM usuarios WHERE usuario = '$user' and password = '$password'";
    $rec = mysql_query($sql);
    $count = 0;
 
    while($row = mysql_fetch_object($rec))
    {
        $count++;
        $result = $row;
    }
 
    if($count == 1)
    {
        return 1;
    }
 
    else
    {
        return 0;
    }
	
}
 
if(!isset($_SESSION['userid']))
{
    if(isset($_POST['login']))
    {
        if(verificar_login($_POST['user'],$_POST['password'],$result) == 1)
        {
            $_SESSION['userid'] = $result;
			 header("location:index.php"); 
        }		
        else
        {
            echo '<div class="error">Su usuario es incorrecto, intente nuevamente.</div>';
        }
		
    }	
?>

//aqui incerte parte del estilo para el formulario por eso el cierre de php


<form action="" method="post" class="login">
    <div><label>Nombre de Usuario</label><input name="user" type="text" ></div>
    <div><label>Contrase&ntilde;a</label><input name="password" type="password"></div>
    <div><input name="login" type="submit" value="Inicio"></div>
    <div><a href="registrar.php" class="registrar"></a></div>
</form>
<?php
}
else {include_once ("principal.php");}
?>
también añado que estoy usando base de datos la cual tengo las siguientes tablas

Código:
Estructura de tabla para la tabla `tiposusuario`
--

CREATE TABLE IF NOT EXISTS `tiposusuario` (
  `id_TipoUsuario` int(11) NOT NULL AUTO_INCREMENT,
  `tx_TipoUsuario` text NOT NULL,
  PRIMARY KEY (`id_TipoUsuario`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Volcado de datos para la tabla `tiposusuario`
--

INSERT INTO `tiposusuario` (`id_TipoUsuario`, `tx_TipoUsuario`) VALUES
(0, 'Administrador'),
(1, 'Gerente'),
(2, 'Usuario'),
(3, 'Promotor');
---------------------------------------------------------------------------------------
Estructura de tabla para la tabla `usuarios`
--

CREATE TABLE IF NOT EXISTS `usuarios` (
  `idusuario` int(10) NOT NULL AUTO_INCREMENT,
  `usuario` varchar(20) NOT NULL,
  `password` varchar(10) NOT NULL,
  `tipo` int(10) NOT NULL,
  PRIMARY KEY (`idusuario`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Volcado de datos para la tabla `usuarios`
--

INSERT INTO `usuarios` (`idusuario`, `usuario`, `password`, `tipo`) VALUES
(0, 'Administrador', '12345', 0),
(1, 'Gerente', '54321', 1),
(2, 'Usuario', '67890', 2),
(3, 'promotor', '09876', 3);
espero me puedan ayudar con mi problema y gracias
  #2 (permalink)  
Antiguo 25/07/2013, 11:04
 
Fecha de Ingreso: febrero-2003
Ubicación: Santiago
Mensajes: 220
Antigüedad: 21 años, 2 meses
Puntos: 4
Respuesta: código de inicio para usuarios

Aun no entiendo cual es tu problema ??? Hay un login y una tabla que tiene un campo tipo.. el problema es??
__________________
Roberto Osses Elgueta
Senior Web Developer
  #3 (permalink)  
Antiguo 25/07/2013, 11:12
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: código de inicio para usuarios

si mi problema es que logro hacer que el usuario correspondiente entre correctamente, pero ahora quiero que ese usuario ingrese con su perfil de usuario llámese "administrador", "Gerente", "Usuario" o "Promotor" para que tenga permisos de modificación en un futuro según le correspondan
  #4 (permalink)  
Antiguo 25/07/2013, 11:18
 
Fecha de Ingreso: febrero-2013
Mensajes: 65
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: código de inicio para usuarios

Y deberías ir a buscarte el campo tipo a la base de datos, y hacer la validación correspondiente.. de que tipo es...
  #5 (permalink)  
Antiguo 25/07/2013, 11:39
 
Fecha de Ingreso: febrero-2003
Ubicación: Santiago
Mensajes: 220
Antigüedad: 21 años, 2 meses
Puntos: 4
Respuesta: código de inicio para usuarios

Exacto, debes guardar el campo tipo (ejemplo $result["tipo"])
Esto lo puedes guardar en una variable de session

$_SESSION["TIPO"]=$result["tipo"]

Recuerda inicializar la session previamente session_start(); en los headers.

Con eso tienes el tipo (0,1,2,3,...n) durante toda la navegacion hasta que cierre el navegador y asi puedes filtrar las autorizaciones... se entiende?
__________________
Roberto Osses Elgueta
Senior Web Developer
  #6 (permalink)  
Antiguo 25/07/2013, 11:39
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: código de inicio para usuarios

ok eso lo entiendo y se como hacer la consulta, por ejemplo:
Cita:
$sql = mysql_query("SELECT a.tipo, a.usuario, a.password, b.id_TipoUsuario, b.tx_TipoUsuario FROM usuarios a, tiposusuario b WHERE tipo=id_TipoUsuario");
while($result=mysql_fetch_array($sql)){
$tipo = $result['tipo'];
$idusuario = $result['id_TipoUsuario'];
$tipousuario = $result['tx_TipoUsuario'];
$user = $result['usuario'];
$pass = $result['password']; }
?>
//donde ago la consulta y comparacion
if($tipo==0){
header("location:principal.php");}
elseif($tipo==1){
header("location:principal2.php");}
elseif($tipo==2){
header("location:principal3.php");}
elseif($tipo==3){
header("location:principal4.php");}
else
{header("location:index.php");}
donde guarda los valores de la consulta en una variable, lo que no e entendido es como hacer que esa consulta se aplique y haga lo que me mencionas, e intentado algunas manera pero la vrd no lo logro entender muy bien, te repito estoy aprendiendo el lenguaje y aun tengo algunas dudas.

Última edición por ghiper; 25/07/2013 a las 11:50 Razón: correccion de texto
  #7 (permalink)  
Antiguo 25/07/2013, 12:39
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: código de inicio para usuarios

bueno lo primero es tener un campo en la tabla donde se indique el rol del usuario (usuario,colaborador,administrador,etc...) una vez verificado el usuario , veo que guardas todo los datos en la variable $result por lo cual una vez exista el campo en la bd la variable $result->rol (imaginemos que llamas al campo de la tabla rol) , donde creas las sessiones puedes crear un switch que verifique el rol y segun su rol redireccione a su pagina , antes de la redireccion crea las sessiones

Código PHP:
Ver original
  1. switch($result->rol)
  2. {
  3. case 'usuario':
  4. header('location:usuario.php');
  5. break;
  6.  
  7. case 'colaborador':
  8. header('location:colaborador.php');
  9. break;
  10.  
  11. case 'desarrollador':
  12. header('location:desarrollador.php');
  13. break;
  14.  
  15. case 'administrador':
  16. header('location:administrador.php');
  17. break;
  18.  
  19. default:
  20. header('location:usuario.php');
  21. }

un saludo
  #8 (permalink)  
Antiguo 25/07/2013, 13:05
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: código de inicio para usuarios

Ten cuidado con la diferencia entre "rol" y "permiso".Si quieres evitarte problemas, crea una tabla donde asignas qué permisos tiene qué rol.
Hay cosas, como "páginas" , que es posible que vayan asociadas a rol (yo no lo recomendaría), pero a medida que vas añadiendo cosas a la web, vas a empezar a llenar el código con "if's" con varios "or" de roles (en caso de que el rol A y el rol B puedan ver algo que el rol C y D no).
En definitiva, un rol define el conjunto de permisos que tiene un usuario, y las decisiones en el código las tomas basandote en esos permisos, no en los roles.
  #9 (permalink)  
Antiguo 25/07/2013, 13:23
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: código de inicio para usuarios

si lo del rol lo entiendo perfectamente, lo que no c aun es como agregar esa validación en mi código:

Código PHP:
Ver original
  1. <?php
  2. include_once "conexion.php";
  3. function verificar_login($user,$password,&$result) {
  4. $password = mysql_real_escape_string($password);
  5.     $sql = "SELECT * FROM usuarios WHERE usuario = '$user' and password = '$password'";
  6.     $rec = mysql_query($sql);
  7.     $count = 0;
  8.  
  9.     while($row = mysql_fetch_object($rec))
  10.     {
  11.         $count++;
  12.         $result = $row;
  13.     }
  14.  
  15.     if($count == 1)
  16.     {
  17.         return 1;
  18.     }
  19.  
  20.     else
  21.     {
  22.         return 0;
  23.     }
  24.    
  25. }
  26.  
  27. if(!isset($_SESSION['userid']))
  28. {
  29.     if(isset($_POST['login']))
  30.     {
  31.         if(verificar_login($_POST['user'],$_POST['password'],$result) == 1)
  32.         {
  33.             $_SESSION['userid'] = $result;
  34.              header("location:index.php");
  35.         }      
  36.         else
  37.         {
  38.             echo '<div class="error">Su usuario es incorrecto, intente nuevamente.</div>';
  39.         }
  40.        
  41.     }  
  42. ?>
  43.  
  44. //aqui incerte parte del estilo para el formulario por eso el cierre de php
  45.  
  46.  
  47. <form action="" method="post" class="login">
  48.     <div><label>Nombre de Usuario</label><input name="user" type="text" ></div>
  49.     <div><label>Contrase&ntilde;a</label><input name="password" type="password"></div>
  50.     <div><input name="login" type="submit" value="Inicio"></div>
  51.     <div><a href="registrar.php" class="registrar"></a></div>
  52. </form>
  53. <?php
  54. }
  55. else {include_once ("principal.php");}
  56. ?>

o como lo puedo reestructurar para que eso me funcione como tal y tener guardada la variable de sesión para poder utilizarla en mis demás paginas
por que hasta ahora solo logro que me reenvié a una pagina diferente pero no diferencia de un usuario de otro solo valida el usuario y si existe lo envía a la pagina que encuentra en el primer "case" o "if"
  #10 (permalink)  
Antiguo 25/07/2013, 13:26
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: código de inicio para usuarios

en esta parte lo implementas es facil

$_SESSION['userid'] = $result;
// verificas rol
// redireccionas a su pagina
  #11 (permalink)  
Antiguo 25/07/2013, 13:33
Avatar de ghiper  
Fecha de Ingreso: julio-2013
Ubicación: Guadalajara Jalisco
Mensajes: 80
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: código de inicio para usuarios

ok gracias por la ayuda!! al parecer me funciona bien, mi problema era que lo estaba colocando en el "else" y no al momento del "if" principal, pero ya estoy aprendiendo un poco mejor el lenguaje Gracias a todos por su ayuda.

Etiquetas: formulario, inicio, mysql, select, sql, tabla, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:02.