Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2006, 13:33
-thor-
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
ayuda con roles

hola
Estoy tratando de realizar el acceso al sistema a traves de roles:tengo una tabla llamada "roles" con tres tipo de roles:ROOT,JEFE,TRABAJADOR.Y tengo otra tabla que se llama "usuarios" en donde se registran los usuarios del sistema,la clave primaria de la tabla roles es foranea en la tabla usuarios.
tambien tengo un campo que se llama usu_eliminado en la tabla usuarios,este campo lo utilizo para bloquerle el acceso al sistema a un usuario determinado.este campo tiene estos dos valores:"SI","NO".

en la pagina usuario.php es donde proceso la informacion que se ingresa en login.php,el codigo de usuario.php lo tengo con comentarios que explican,que realiza cada parte

yo quiero que segun el rol,que tenga el usuario le da acceso a una determinada parte del sistema.

ejemplo:
se logueo el administrador:
primero se realiza la consulta que comprueba que rol tiene,luego si esta eliminado y finalmente comprobar su rut y password de la sigueinte manera.
usuario logueado deber ser igual a="ROOT","NO",rut y password,si todo coincide deberia enviarme a las funciones que tiene el root.y viceversa si fuera en el caso de un fe,con la diferencia que deberia comprobar de esta manera ="JEFE","NO",rut y password,de tener la opcion en "SI",me deberia mostrar un mensaje avisando que el usuario esta eliminado y si todo coincide,enviarme a las funciones del jefe.

campo eliminado:tiene la opcion "SI" Y "NO".

ahora en el codigo que hice,siempre me dice que esta mal nombre de usuario y no puedo acceder al sistema,como puedo solucionar ese error,o de que otra manera puedo conseguir lo que necesito.
gracias


esta es la pagina login.php,en donde envio el rut y password,que sera comporbado en usuario.php
login.php
Código PHP:
<html>
<head>
<title></title>


<script>
/*Lo que hace esta función es recorrer todos
los elementos de nombre valor y si hay alguno marcado devuelve
true   */

function verificar() {
  for(i=0; ele=document.formulario.valor[i]; i++)
    if (ele.checked) return true;
  alert("Debe seleccionar una opcion");
  return false;
}
             </script>


</head>
<body>




<form name=formulario action="/sistema_productos/usuarios/usuario/usuario.php" method="POST"
onSubmit="return verificar(this);">
<table align="center" width="225" cellspacing="3" cellpadding="3" border="3">icar(this);"
<tr>
<td colspan="2" align="center"
<?php
if ($_GET["errorusuario"]=="si")
{
?>
bgcolor=#cccccc><span style="color:black">Introduce tu rut y clave de acceso
<script>alert('Nombre de usuario o contraseña incorrecta');</script></b></span>
<?php
}
else
{
?>
bgcolor=#cccccc>Introduce tu rut y clave de acceso
<?php
}
?>

</td>
</tr>
<tr>
<td class='estilocelda' align="center"> Administrador
<br><center><input type="radio" name="valor" value=1></center></td>

<td class='estilocelda' align="center">jefe bodega<br>

<center><input type="radio" name="valor" value=2></center></td>
</tr>
<tr>
<td align="center" class='estilocelda'>trabajadores<br>
<center><input type="radio" name="valor" value=3></center></td>

<td align="left" class='estilocelda'>Seleccione una opcion</td>

</tr>

<tr>
<td align="left" class='estilocelda'>Rut:</td>
<td>
<input type="text" name="rut" size="20" maxlength="60"></td>
</tr>
<tr>
<td align="left" class='estilocelda'>Clave Acceso:</td>
<td><input type="password" name="clave" size="20" maxlength="60"></td>
</tr>
</td>
</td>
<tr>
<td colspan="2" align="center"><input type="Submit" value="Iniciar Sesion">
<input type="Reset" value="Borrar"></td>
</tr>
</table>
</form>
<br><br><br><br>
<img src=abajo_rojo.jpg style="width:102%;"></img>
</body>
</html>


usuario.php
Código PHP:
<?php
$rut         
$_POST["rut"];
$clave       $_POST["clave"];
$pass_encri        =    md5($clave);
//conecto con la base de datos
$conn mysql_connect("localhost","root","");
//selecciono la BBDD
mysql_select_db("productos",$conn);

/*Sentencia SQL para saber el rol asignado al usuario,y
de esta forma ver que acceso tiene al sistema.*/

$rol ="select rol_codigo,rol_nombre
       from
       usuarios U,
       roles    R
       where
       usu_rut_persona='$rut'
       and
       U.rol_codigo=R.rol_codigo"
;


/*Sentencia SQL para saber si un usuario esta eliminado
del sistema*/

$eliminado="select usu_eliminado from usuarios
            where usu_rut_persona='$rut'"
;


/*Sentencia SQL para buscar un usuario con esos datos,
si los datos son correctos podra acceder al sistema,
si son incorrecto sera enviado al login*/

$ssql "SELECT usu_rut_persona,usu_password FROM usuarios
        WHERE usu_rut_persona='$rut'
        and usu_password='$pass_encri'"
;



//Ejecuto las sentencias sql
$rs mysql_query($ssql,$conn);
$resultado_rolmysql_query($rol,$conn);
$resultado_eliminado=mysql_query($eliminado,$conn);



   
//vemos si el usuario y contraseña ,rol y opcion de eliminado es válido
//en la opcion de eliminado deberia ser SI O NO
   
if (mysql_num_rows($rs)!=and ($resultado_rol)=="ROOT"
       
and ($resultado_eliminado)=="NO")

    {
    
//Consulta para tomar el rut
    
$resultadomysql_query("SELECT usu_rut_persona
    FROM usuarios WHERE usu_rut_persona='$rut'"
,$conn);
    
$rowmysql_fetch_array($resultado);

    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();

   
$_SESSION['rut']=$row['rut'];
   
session_register("autentificado");
   
$_SESSION['autentificado']= "SI";

//si todo se cumple me envia al switch y luego a las funciones del administrador
   
switch($_POST["valor"])
    {
  case 
1:
  
header("location:/sistema_productos/portales/portal_usuario/portal_root.php");
  break;
    }
//fin switch
    
}//fin else


  
else if (mysql_num_rows($rs)!=and ($resultado_rol)=="JEFE"
       
and ($resultado_eliminado)=="NO")

    {
//inicio else if
    //Consulta para tomar el rut
    
$resultadomysql_query("SELECT usu_rut_persona
    FROM usuarios WHERE usu_rut_persona='$rut'"
,$conn);
    
$rowmysql_fetch_array($resultado);

    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();

   
$_SESSION['rut']=$row['rut'];
   
session_register("autentificado");
   
$_SESSION['autentificado']= "SI";

//si todo se cumple me envia al switch y luego a las funciones del jefe
   
switch($_POST["valor"])
    {
//inicio switch
  
case 2:
  
header("location:/sistema_productos/portales/portal_usuario/portal_jefe.php");
  break;
    }
//fin switch
    
}//fin else if






    
else
    {
//comienzo del else

    //si no existe le mando otra vez a la portada
    
header("Location:/sistema_productos/logins/login.php?errorusuario=si");

    }
//cierre del else

    
mysql_free_result($rs);
    
mysql_close($conn);

?>