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
-
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
<?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
<?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
-
Location en la funcion header es con mayúsculas, puede ser eso??
Osea, sería:
...
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...
-
hola dongo gracias por ayudarme lo cambie tal cual me indicaste me aparece lo mismo redirecciona siempre a la misma pagadmin
-
Creo que el problema podría estar aquí, en el fichero procesa login, casi al final:
...
$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:
$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.
-
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... :)
-
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.
-
Necesito hacer exactamente lo mismo en un proyecto, ya copie tu codigo pero no me sale no se ??
-
soy nuevo en esto me pueden mandar el codigo del formulario porfavor
-
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