Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: Ruffus en 07 de Septiembre de 2015, 03:27:43 am

Título: If anidados
Publicado por: Ruffus en 07 de Septiembre de 2015, 03:27:43 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: [Seleccionar]
<?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.



Título: Re:If anidados
Publicado por: DarkArrow en 29 de Septiembre de 2015, 16:39:01 pm
Muy facil:

Código: [Seleccionar]
<?php 
$tipo 
$dato["tipo"];
$estado $dato["estado"];

$destinosTipo = array("a"=>"administrador""sp" =>"supervisor""s" =>"secretario");
$destinosEstado = array("y"=>"Activo""n" =>"Inactivo") ;
if(
array_key_exists($destinosTipo[$tipo]) && array_key_exists($destinosEstado[$estado])) {// #1
    
$destinoArchivo $destinosTipo[$tipo] . $destinosEstado[$estado] . ".php";
    
header("Location: $destinoArchivo");
}
else{}
//#1
?>

Esto redirige al archivo administradorInactivo.php, o secretarioActivo.php etc...

#1 El if comprueba que el tipo y estado devueltos por la consulta sql existen como key en el array que usamos, si POR CASUALIDAD no existieran quiere decir que vienen mal de la base de datos, pero podriamos hacer un redirect a ".php" molestando al usuario así que si no se puede redirigir correctamente en el else te encargas de esto