Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: xap en 25 de Agosto 2014, 22:31

Título: redireccionar a diferentes paginas al loguearse con php
Publicado por: xap en 25 de Agosto 2014, 22:31
Buenas Amigos, Tengo un problema, reliace un login de usuario pero me pidieron que tenia que ser con dos perfiles Administrador y Usuario.
Tengo dos tablas una de usuarios y otra llamada nivel

tabla_usuario
nombre
apellido
login
clave
id_nivel:(fk)

tabla_nivel
id_nivel:(pk)
nombre

en la tabla nivel esta de la siguiente forma: id nombre
0 administrador
1 usuario
de manera que cuando registre un usuario en el id nivel en la tabla usuario le coloque el perfil.
cuando registro a los usuarios y le doy el tipo de perfil "0" o "1" y cuando intento loguearme siempre me redirecciona es a la pagina del administrador asi sea teniendo perfil de usuario.
Lo que quisiera y espero me puedan ayudar teniendo en cuenta los valores de la tabla nivel al loguearme me redireccione correctamente al usuario o administrador.
los formulario de php son los siguientes:

crea usuarios
Código: [Seleccionar]
<?php
 
include dirname(dirname(__FILE__))."/config.php";

$link=Conectarse();

$id $_POST['id'];
 
$login $_POST['login'];
 
$pass1 $_POST['pass1'];
 
$pass2 $_POST['pass2'];
 
$nombre$_POST['nombre'];
 
$apaterno=$_POST['apaterno'];
 
$amaterno$_POST['amaterno'];
 
$email $_POST['email'];
 
$id_nivel $_POST['id_nivel'];
 
$query sprintf("SELECT login FROM usuarios WHERE usuarios.login = '%s'" ,
 
$login);
 
$result=mysql_query($query,$link);
 
if(
mysql_num_rows($result)){
 
echo 
"El usuario ya existe en la Base de Datos";
 
} else {
 
mysql_free_result($result);
 
if(
$pass1!=$pass2) {
 
echo 
"Los passwords deben coincidir";
 
} else {
 
$pass1=sha1(md5($pass1));
 
$query sprintf("INSERT INTO usuarios (login, nombre, apaterno, amaterno, password, email, id_nivel)
 
VALUES ('%s', '%s', '%s', '%s', '%s', '%s','%s')"
,$login$nombre$apaterno,$amaterno$pass1$email$id_nivel);

 
$result=mysql_query($query,$link);
 
if(
mysql_affected_rows()){
 
header("Location: ../login.html");
 
} else {
 
echo 
"Ocurrio un Error al Introducir los Datos";

}
 
}
 
}
 
?>

procesa login
Código: [Seleccionar]
<?php
 
session_start
();

 
include 
dirname(dirname(__FILE__))."/config.php";

$link=Conectarse();
 
$login $_POST['login'];
 
$pass $_POST['pass'];
 
$pass=sha1(md5($pass));
 
$query sprintf("SELECT usuarios.id,
 
usuarios.login,
 
usuarios.nombre,
 
usuarios.apaterno,
 
usuarios.amaterno,
 
usuarios.email,
 
usuarios.id_nivel
 
FROM usuarios WHERE usuarios.login='%s'&& usuarios.password = '%s'"
,
 
$login$pass);
 
$result=mysql_query($query,$link);
 
if(
mysql_num_rows($result)){
 
$array=mysql_fetch_array($result);
 
$_SESSION["id_usuario"]= $array["id"];
 
$_SESSION["login"]= $array["login"];
 
$_SESSION["nombre"]= $array["nombre"];
 
$_SESSION["apaterno"]= $array["apaterno"];
 
$_SESSION["amaterno"]= $array["amaterno"];
 
$_SESSION["email"]= $array["email"];
 
$_SESSION["id_nivel"]= $array["id_nivel"];

$id_nivel $_POST['id_nivel'];
$nombre $_POST['nombre'];



$query2 sprintf("SELECT * FROM usuarios,nivel WHERE usuarios.id_nivel=nivel.id_nivel");


if(
$id_nivel  == 0){
   
$id_nivel "administrador"
    
header("location:adminPage.php"); 
}elseif(
$id_nivel 1){
    
$id_nivel "usuario";
    
header("location:normal.php"); }
 
}
 
?>
En esta ultima intente realizar la operacion requerida pero no me redirecciona bien la pagina, soy novato espero me comprendan y me puedan ayudar
Título: Re:redireccionar a diferentes paginas al loguearse
Publicado por: dongo en 25 de Agosto 2014, 22:47
Location en la funcion header es con mayúsculas, puede ser eso??

Osea, sería:

Código: [Seleccionar]
...
if($id_nivel  == 0){
   $id_nivel = "administrador";
    header("Location:adminPage.php");
}elseif($id_nivel = 1){
    $id_nivel = "usuario";
    header("Location:normal.php"); }
 ...

Bueno ya nos cuentas...
Título: Re:redireccionar a diferentes paginas al loguearse
Publicado por: xap en 26 de Agosto 2014, 00:29
hola dongo gracias por ayudarme lo cambie tal cual me indicaste me aparece lo mismo redirecciona siempre a la misma pagadmin
Título: Re:redireccionar a diferentes paginas al loguearse
Publicado por: dongo en 26 de Agosto 2014, 00:44
Creo que el problema podría estar aquí, en el fichero procesa login, casi al final:

Código: [Seleccionar]
...
$id_nivel = $_POST['id_nivel'];
$nombre = $_POST['nombre'];
...

Si te fijas estas obteniendo estos valores de $_POST y no es en $_POST donde están, están en array, creo que debería ser:

Código: [Seleccionar]
$id_nivel = $array['id_nivel'];
$nombre = $array['nombre'];

Ya que el id de nivel no creo que venga desde el formulario de login, sino que lo has sacado de la consulta, entonces lo que te esta pasando es que la variable $id_nivel no tendrá  valor y por eso no te redirecciona....

Bueno a ver si es eso, ya nos cuentas.

Título: Re:redireccionar a diferentes paginas al loguearse
Publicado por: xap en 26 de Agosto 2014, 01:12
Amigo de verdad no se como agradecerte me has quitado tantas horas de encima  y tantos dias de buscar en google y nada hasta que me respondistes en realidad no encontraba el problema muchas gracias hermano ya se soluciono... :)
Título: Re:redireccionar a diferentes paginas al loguearse
Publicado por: dongo en 26 de Agosto 2014, 01:27
Nada hombre, era un fallo tonto a cualquiera se le puede escapar... Por lo demás esta bastante bien, incluso encriptas la password, no todo el mundo lo hace ;) un saludo.
Título: Re:redireccionar a diferentes paginas al loguearse con php
Publicado por: asolis147 en 31 de Octubre 2014, 20:14
Necesito hacer exactamente lo mismo en un proyecto, ya copie tu codigo pero no me sale no se  ??
Título: redireccionar a diferentes paginas al loguearse con php
Publicado por: asolis147 en 31 de Octubre 2014, 20:16
soy nuevo en esto me pueden mandar el codigo del formulario porfavor
Título: Re:redireccionar a diferentes paginas al loguearse con php
Publicado por: Alex Rodríguez en 01 de Noviembre 2014, 10:32
Hola, debes tener en cuenta que el código no puedes simplemente copiarlo, por ejemplo en la línea include dirname(dirname(__FILE__))."/config.php"; está invocando un archivo config.php, y para poder hacer lo mismo tendrás que crear ese archivo e introducir lo que haga falta en él (por ejemplo los datos de conexión a base de datos).

Puedes revisar conceptos viendo el curso de php: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

Una vez hayas creado tu código, si tienes problemas te recomiendo que abras un nuevo tema del foro y plantees la consulta para tratar de ayudarte con tu código.

Saludos