• Jueves 2 de Mayo de 2024, 15:08

Autor Tema:  Control de Acceso?  (Leído 2072 veces)

Comodoro

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Control de Acceso?
« en: Sábado 22 de Mayo de 2010, 01:38 »
0
Hola a todos/as he realizado un Control de Acceso, en el cual cualquier Usuario que este Registrado en la Tabla Usuario puede entrar al Sistema.

Lo que quiero hacer es que este Control de Usuario tenga varios Niveles o Roles de Usuario, que dependiendo del Tipo de Usuario el pueda accesar solo a ciertas paginas del Sistema.

Lo que quiero hacer:
1.- Que dependiendo del Tipo de Usuario que sea la Persona; cuando este escriba su Nombre de Usuario y Password que lo Direccione a una Determinada Pagina.

La BD es esta:      
 id_usuario
 usuario
 clave
 respuesta
 nivel  Es en este Campo es donde va a ir el Nivel del Usuario (Administrador, Usuario_1 y Usuario_2)

El codigo Php
(Este codigo Funciona, lo que me faltaria es que dependiendo del Nivel te Re-direccione, no se como hacerlo)

<?Php
//include ("../Include/Conexion.php");

$servidor = "localhost";
$usuario = "root";
$password = "";
$db = "cacique";
   
$cn = mysql_connect ($servidor, $usuario, $password) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($db, $cn);
session_start();

if (isset($_POST['Enviar']))
{
   $user = $_POST['user'];
   $pass = $_POST['pass'];

   if (($_POST['user'] == "") or ($_POST['pass'] == ""))
   {
      echo '<script>alert("Llene los Campos");</script>';
   }else
   {
   $query = mysql_query ("SELECT usuario, clave FROM usuarios WHERE  usuario = '$_POST[user]' AND clave = '$_POST[pass]'");
   $Ssql = mysql_fetch_array($query);
      if (($Ssql['usuario'] != $user) or ($Ssql['clave'] != $pass)){
         echo '<script>alert("Nombre de Usuario o Contraseña Invalido");</script>';
      }else
      {        
         session_register ("user");
         $_SESSION[user] = $Ssql ["usuario"];
         header ("Location: Seccion_Usuario.php");
      }
   }
}
?>


Bueno eso es todo espero quue me puedan ayudar, lo agradeceria Mucho!

fonsi3

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: Control de Acceso?
« Respuesta #1 en: Sábado 22 de Mayo de 2010, 03:24 »
0
session_register ("user"); está deprecado, directamente puedes poner $_SESSION['user'] = 'Morfon' y todo ok.
Sobre tu duda de redireccionar a x lugar dependiendo que tipo de usuario es, bueno primero debes obtener que nivel de usuario tiene tal usuario, luego ya sabiendo que nivel de usuario posee, ya sabrás adónde redireccionarlo, por ejemplo:

Aviso que tienes un enorme error de seguridad, al poner directamente en la query $_POST['....'], primero debes satinizar la variable!!

Código: PHP
  1. <?php
  2.    
  3.     // sanitizo la variables:
  4.     $usuario = mysql_real_escape_string( $_POST['usuario'] );
  5.     $clave = mysql_real_escape_string( $_POST['clave'] );
  6.  
  7.     // preparo la consulta
  8.     $query = " SELECT usuario, nivel FROM usuarios
  9.             WHERE usuario = '$usuario' AND clave = '$clave' LIMIT 1 ";
  10.     // la mando
  11.     $result = mysql_query( $query );
  12.     // pregunto si no arrojo resultados
  13.     if( !$result ) {
  14.         die( 'Fatal error: Usuario/Contraseña incorrecto.' );
  15.     } else {
  16.         // todo ok, tonces fetcheo la fila
  17.         $row = mysql_fetch_assoc( $result );
  18.         $_SESSION['usuario'] = $row['usuario'];
  19.         $_SESSION['nivel'] = $row['nivel'];
  20.         // pregunto que nivel tiene el usuario, y lo redirecciono
  21.         switch( $_SESSION['nivel'] ) {
  22.             case 'admin':
  23.                 header( 'Location: adminpanel.php' );
  24.                 break;
  25.             case 'user':
  26.                 header( 'Location: userpanel.php' );
  27.                 break;
  28.         }
  29.     }
  30.  
  31. ?>
  32.  
Cha che chi cho chu buenichimo!
http://mensoscripts.com

Links de interes: HTML | CCS2~CSS* | PHP
Indispensables tools]Firebug[/url] | Web Developer | FireFTP | Live Headers

Comodoro

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Control de Acceso?
« Respuesta #2 en: Sábado 22 de Mayo de 2010, 15:17 »
0
Muchas gracias por Responder, habia intentado de hacerlo pero nada no me salia, y otra pregunta tu mencionas algo de Satanizar  la Varible que es eso, me podrias explicar el Error que estoy cometinedo porque yo no lo Veo, tu escribes esto!:

Aviso que tienes un enorme error de seguridad, al poner directamente en la query $_POST['....'], primero debes satinizar la variable!!

fonsi3

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: Control de Acceso?
« Respuesta #3 en: Sábado 22 de Mayo de 2010, 15:40 »
0
Como todos los datos que se almacenan en $_POST los ingresa el usuario, es posible que algun hijo de puta escriba codigo malicioso en los textboxes, y si no sanitizas las variables, es decir limpiarlas, corres el riesgo de sufrir lo que se denomina una sql injection. Por eso como veras para evitar eso utilizo la funcion mysql_real_escape_string(  ) que se encarga de escapar todo caracter problematico como la comilla, etc.
Cha che chi cho chu buenichimo!
http://mensoscripts.com

Links de interes: HTML | CCS2~CSS* | PHP
Indispensables tools]Firebug[/url] | Web Developer | FireFTP | Live Headers

Comodoro

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Control de Acceso?
« Respuesta #4 en: Sábado 22 de Mayo de 2010, 16:03 »
0
Ok, entendi Gracias por la Prontitud de tu Respuesta!