Variables de sesion con roles, PDO
Publicado por Alberto (11 intervenciones) el 04/05/2017 08:45:59
Buenos dias tengo un sitio web redirigido por variables de sesion que funcionan perfectamente, el problema es, que quiero indicar roles, unicamente con invitado y admin me valdria.
En estos momentos pasan todos los usuarios logueados, y si no lo detecta logueado no deja pasar a la URL, pues ahroa bien necesito hacer la smodificaciones necesarias para que detecte si es invitado o admin y siendo uno u otro vaya a una URL diferente.
Usuario.php
Imagino que aqui arriba se deberia de declarar dos variables para la busqueda del rol.
crud_usuario.php
En esta parte donde deberiamos de realizar el select para buscar el rol.
controller_login.php
En este ha realizado las redirecciones.
Los campos de la tabla users son:
Id, nombre, clave, rol
En estos momentos pasan todos los usuarios logueados, y si no lo detecta logueado no deja pasar a la URL, pues ahroa bien necesito hacer la smodificaciones necesarias para que detecte si es invitado o admin y siendo uno u otro vaya a una URL diferente.
Usuario.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
/*
*
*
*/
class Usuario{
private $id;
private $nombre;
private $clave;
private $access_level;
public function getaccess_level(){
return $this->access_level;
}
public function setaccess_level($nivel){
$this->access_level = $access_level;
}
public function getId(){
return $this->id;
}
public function setId($id){
$this->id = $id;
}
public function getNombre(){
return $this->nombre;
}
public function setNombre($nombre){
$this->nombre = $nombre;
}
public function getClave(){
return $this->clave;
}
public function setClave($clave){
$this->clave = $clave;
}
}
?>
Imagino que aqui arriba se deberia de declarar dos variables para la busqueda del rol.
crud_usuario.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
require_once('conexion.php');
require_once('usuario.php');
class CrudUsuario{
public function __construct(){}
//inserta los datos del usuario
public function insertar($usuario){
$db=DB::conectar();
$insert=$db->prepare('INSERT INTO USERS VALUES(NULL,:nombre, :clave,"")');
$insert->bindValue('nombre',$usuario->getNombre());
//encripta la clave
$pass=password_hash($usuario->getClave(),PASSWORD_DEFAULT);
$insert->bindValue('clave',$pass);
$insert->execute();
}
//obtiene el usuario para el login
public function obtenerUsuario($nombre, $clave){
$db=Db::conectar();
$select=$db->prepare('SELECT * FROM USERS WHERE nombre=:nombre');//AND clave=:clave
$select->bindValue('nombre',$nombre);
$select->execute();
$registro=$select->fetch();
$usuario=new Usuario();
//verifica si la clave es conrrecta
if (password_verify($clave, $registro['clave'])) {
//si es correcta, asigna los valores que trae desde la base de datos
$usuario->setId($registro['Id']);
$usuario->setNombre($registro['nombre']);
$usuario->setClave($registro['clave']);
}
return $usuario;
}
//busca el nombre del usuario si existe
public function buscarUsuario($nombre){
$db=Db::conectar();
$select=$db->prepare('SELECT * FROM USERS WHERE nombre=:nombre');
$select->bindValue('nombre',$nombre);
$select->execute();
$registro=$select->fetch();
if($registro['Id']!=NULL){
$usado=False;
}else{
$usado=True;
}
return $usado;
}
}
?>
En esta parte donde deberiamos de realizar el select para buscar el rol.
controller_login.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
require_once('usuario.php');
require_once('crud_usuario.php');
require_once('conexion.php');
//inicio de sesion
session_start();
$usuario=new Usuario();
$crud=new CrudUsuario();
//verifica si la variable registrarse está definida
//se da que está definicda cuando el usuario se loguea, ya que la envía en la petición
if (isset($_POST['registrarse'])) {
$usuario->setNombre($_POST['usuario']);
$usuario->setClave($_POST['pas']);
if ($crud->buscarUsuario($_POST['usuario'])) {
$crud->insertar($usuario);
header('Location: index.php');
}else{
header('Location: error.php?mensaje=El nombre de usuario ya existe');
}
}elseif (isset($_POST['entrar'])) { //verifica si la variable entrar está definida
$usuario=$crud->obtenerUsuario($_POST['usuario'],$_POST['pas']);
// si el id del objeto retornado no es null, quiere decir que encontro un registro en la base
if ($usuario->getId()!=NULL) {
$_SESSION['usuario']=$usuario; //si el usuario se encuentra, crea la sesión de usuario
header('Location: indexlogueado.php'); //envia a la página que simula la cuenta
}else{
header('Location: error.php?mensaje='); // cuando los datos son incorrectos envia a la página de error
}
}elseif(isset($_POST['salir'])){ // cuando presiona el botòn salir
header('Location: index.php');
unset($_SESSION['usuario']); //destruye la sesión
}
?>
En este ha realizado las redirecciones.
Los campos de la tabla users son:
Id, nombre, clave, rol
- login.rar(1,7 KB)
Valora esta pregunta
0