Buenas,
primer punto: el código. ¿Qué condición no se está compliendo?
<?php
//...
if($user==$user1 && $pass==$pass1 && $user!="" && $rol=="admin"){
//logueamos como admin
exit;
}elseif($user==$user1 && $pass==$pass1 && $user!="" && $rol=="user"){
//logueamos como user
exit;
}else{
//no logueamos
exit;
}
?>
Con esta estructura, ¿qué condición es la que nos "echa"?¿La primera o la segunda?¿Es por user, es por pass, ...por el rol?...
Yo propondía algo así:
<?php
//...
if($user==$user1 && $pass==$pass1 && $user!="") {
// Se ha verificado que es un usuario, a ver que rol desempeña
switch($rol) {
case "admin":
//logueamos como admin
break;
case "user":
//logueamos como user
break;
default:
//notificamos que el rol del usuario no está implementado o lo que sea
}
}else{
//notificamos que user o password son incorrectos
}
?>
más que nada para tener algo más de control y no andar todo el rato preguntando lo mismo. Además en caso de no tener éxito, tenemos un error más específico.
Sería interesante tener la definición SQL de la tabla. A la hora de comparar el pasword, o resto de datos, ¿qué estamos comparando? Es decir, así como los locos, se me ocurrió que quizá pueda ser un error de tipos. Lo mismo podría suceder con otros valores de la siguiente condición.
if ($user==$user1 && $pass==$pass1 && $user!="" && $rol=="user")
Prueba a usar === en lugar de == . El operador '===' no realiza conversión de tipo y evita problemas "inesperados", aunque debes asegurarte de que los dos elementos son del mismo tipo.
primer punto: el código. ¿Qué condición no se está compliendo?
<?php
//...
if($user==$user1 && $pass==$pass1 && $user!="" && $rol=="admin"){
//logueamos como admin
exit;
}elseif($user==$user1 && $pass==$pass1 && $user!="" && $rol=="user"){
//logueamos como user
exit;
}else{
//no logueamos
exit;
}
?>
Con esta estructura, ¿qué condición es la que nos "echa"?¿La primera o la segunda?¿Es por user, es por pass, ...por el rol?...
Yo propondía algo así:
<?php
//...
if($user==$user1 && $pass==$pass1 && $user!="") {
// Se ha verificado que es un usuario, a ver que rol desempeña
switch($rol) {
case "admin":
//logueamos como admin
break;
case "user":
//logueamos como user
break;
default:
//notificamos que el rol del usuario no está implementado o lo que sea
}
}else{
//notificamos que user o password son incorrectos
}
?>
más que nada para tener algo más de control y no andar todo el rato preguntando lo mismo. Además en caso de no tener éxito, tenemos un error más específico.
Sería interesante tener la definición SQL de la tabla. A la hora de comparar el pasword, o resto de datos, ¿qué estamos comparando? Es decir, así como los locos, se me ocurrió que quizá pueda ser un error de tipos. Lo mismo podría suceder con otros valores de la siguiente condición.
if ($user==$user1 && $pass==$pass1 && $user!="" && $rol=="user")
Prueba a usar === en lugar de == . El operador '===' no realiza conversión de tipo y evita problemas "inesperados", aunque debes asegurarte de que los dos elementos son del mismo tipo.