Comunidad de diseño web y desarrollo en internet online

If anidados

Citar            
MensajeEscrito el 08 Sep 2015 02:22 am
Buenas tardes, me dirigo a ustedes con la siguiente duda, tengo un index.html con un form (user, pass y botón) registra el user y pass y lo compara mediante un login.php conectandose a su vez a la db en mysql, el usuario lo compara con el pass si es correcto pasa a un segundo if donde verifica el tipo de usuario a = admin, sp = supervisor, s = secretaria y un tercer if donde verifica si esta activo o no 'y' o 'n', el siguiente es el código utilizado:

Código :

<?php
      session_start();
      include_once('con.php'); 
      
      if(!empty($_POST['usuario']) and !empty($_POST['contra'])){
         $usuario=limpiar($_POST['usuario']);
         $contra=limpiar($_POST['contra']);
         $can=mysql_query("SELECT * FROM usuarios WHERE (user='".$usuario."' or cedula='".$usuario."') and password='".$contra."'");
         if($dato=mysql_fetch_array($can)){
            $_SESSION['username']=$dato['user'];
            $_SESSION['tipo_usu']=$dato['tipo'];
             
            ///////////////////////////////
            if($_SESSION['tipo_usu']=='a'){
               if($dato['estado']=='y'){
                  header('location:Administrador.php');
               }
            }
         }
      }
?>


mi problema es cuando escribo otro if para hacer la comparación si es sp o s y que rediriga a las paginas correspondientes, supervisor.php y secretaria.php.

Si alguno de ustedes podría hecharme una mano, estaría muy agradecido.

Saludos. :beer:

Por Ruffus

1 de clabLevel



 

safari
Citar            
MensajeEscrito el 08 Sep 2015 12:25 pm
Primera cosa antes que nada. Ojalá que la función limpiar() haga su trabajo porque a simple vista la consulta SQL no parece muy segura.

Segunda cosa, no necesitas todos los campos de la tabla 'usuarios', ¿verdad?, lo digo por el *, siempre que puedas, lista los campos que realmente vas a usar, así se acelera la consulta.

Finalmente a lo que venías. Si el usuario no está activo, no necesitas hacer nada más. Ni siquiera crearle una sesión, así que lo primero sería:

Código PHP :

if($dato=mysql_fetch_array($can)){
  if ($dato['estado'] != 'y') {
    header('location: usuario_no_valido.php');
    exit;
  }
            $_SESSION['username']=$dato['user'];
            $_SESSION['tipo_usu']=$dato['tipo'];
// Resto del código.
}


Luego por el tema del tipo de usuario, en vez de usar if, es mejor usar un switch().

Por DriverOp

Claber

2510 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.