Foros del Web » Programando para Internet » PHP »

usuarios duda

Estas en el tema de usuarios duda en el foro de PHP en Foros del Web. supongo q este es un tema recurrente, sin embargo sigo teniendo dudas al respecto. Quiero asignar niveles y segun el nivel acceder o no a ...
  #1 (permalink)  
Antiguo 20/02/2012, 06:16
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 13 años
Puntos: 0
usuarios duda

supongo q este es un tema recurrente, sin embargo sigo teniendo dudas al respecto.
Quiero asignar niveles y segun el nivel acceder o no a determinadas secciones de la web. Viendo un poco los ejemplos que he obtenido, hago una pagina de control y llamo a una de funciones donde controlo a los usuarios.
control.php
Código PHP:
<?php
include ('funciones.php');
$username $_POST['username'];
$pass $_POST['pass'];
if (
conexiones($username$pass)){
    
header('Location: index.php');
} else {
    
header('Location: salidas.php');
}
?>
funciones.php
Código PHP:
function conexiones($username$pass) {
   
//conexion con el servidor de base de datos MySQL
   
$conexion pg_connect("host=xxx port=xxx dbname=xxx user=postgres password=xxx");
       if (!
$conexion){
        echo 
"<center>La conexi&oacute;n con la base de datos no se ha realizado.</center>";
        exit;
}
   
$escaped_user pg_escape_string($username);
   
$escaped_pass pg_escape_string($pass);
  
$query "SELECT * FROM usuarios WHERE username= '$escaped_user' AND pass= '$escaped_pass'";
   
$result pg_query($query);
   
//si existe inicia una sesion y guarda el nombre del usuario
   
if (pg_num_rows($result)!=0){
      
session_start();
      
//configurar un elemento usuario dentro del global $_SESSION
      //session_register("autentificado");
      
$_SESSION['username']=$username;
      return 
true;
   } else {
           return 
false;
     } 
 }
 
//funcion para verificar que existe el usuario
 
function verificar_usuario(){
     
//continuar sesion iniciada
    
session_start();
    
//comprobar existencia usuario
    
if ($_SESSION['username']){
        return 
true;
    }

perfect. entonces quiero ver el nivel de acceso, ¿como haria? en el fichero funciones cuando asigno la session a username deberia de hacer?
Código PHP:
$_SESSION['username']=$username;
$_SESSION['usuario_nivel']=$username['nivel_acceso']; 
y despues cuando quiera dar visibilidad o no a determinadas zonas de la web, como hago?
gracias.
  #2 (permalink)  
Antiguo 20/02/2012, 06:20
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: usuarios duda

Es tan fácil como asignar números, ejemplo:
1 - Administrador
2 - Poster
3 - User

Luego cada vez que alguien se conecte haces un query a la base de datos y miras el número, lo metes en una session y posteriormente en cada sección de la web debes de poner un módulo que compruebe el número, después las reglas:

Código PHP:
Ver original
  1. if($_SESSION['controlUser'] == 1){
  2.    //Zona administrador
  3. }else if($_SESSION['controlUser'] == 2){
  4.   //Zona poster
  5. }else{
  6.   //Zona user
  7. }
  #3 (permalink)  
Antiguo 21/02/2012, 03:46
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 13 años
Puntos: 0
Respuesta: usuarios duda

la query es la principal, no? esto es
Código PHP:
 $consulta_usuario "SELECT username, pass, id_roles FROM usuarios WHERE username= '$escaped_user' AND pass= '$escaped_pass'"
la ejecuto y sigo el codigo, no?
Código PHP:
 $result pg_query($consulta_usuario);
   
//Miramos el total de resultado de la consulta (si es distinto de 0 es que existe el usuario),inicia una sesion y guarda el nombre del usuario
   
if (pg_num_rows($result)!=0){
       
// almacenamos datos del Usuario en un array para empezar a chequear.
            
$usuario_datos pgl_fetch_array($result);
         
// liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
         
pg_free_result($usuario_datos);
         
// cerramos la Base de dtos.
         
pg_close($conexion);
        
// le damos un mobre a la sesion.
          
$_SESSION['username']=$username;
          
// inicia sessiones
          
session_start();
          
//decimos al navegador que no "cachee" esta página.
         
session_cache_limiter('nocache,private');
          
// definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
         
$_SESSION['controlUser']= $usuario_datos['id_roles'];
          return 
true;
   } else {
           return 
false;
     } 
 }
 
//funcion para verificar que existe el usuario
 
function verificar_usuario(){
     
//continuar sesion iniciada
    
session_start();
    
//comprobar existencia usuario
    
if ($_SESSION['username']){
        return 
true;
    }


Última edición por emeotero; 21/02/2012 a las 03:55

Etiquetas: mysql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:17.