Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema con sesion de varios usuarios

Estas en el tema de problema con sesion de varios usuarios en el foro de PHP en Foros del Web. hola, estoy con el desarrollo de una aplicacion sencilla, pero me esta dando dolor de cabeza la sesion de multiples usuarios, la idea es crear ...
  #1 (permalink)  
Antiguo 14/05/2012, 14:34
 
Fecha de Ingreso: mayo-2012
Mensajes: 26
Antigüedad: 11 años, 11 meses
Puntos: 2
Pregunta problema con sesion de varios usuarios

hola, estoy con el desarrollo de una aplicacion sencilla, pero me esta dando dolor de cabeza la sesion de multiples usuarios, la idea es crear dos o 3 niveles de usuarios q de echo ya tengo las tablas armadas, a continuacion les muestro el archivo que valida mi login de inicio:


Código PHP:
Ver original
  1. <?php
  2. include("config/conexion.php");
  3.  
  4. if (!isset($_POST["username"]) || !isset($_POST["password"])){
  5.     header("location: index.php?errorlogin=1");
  6.  
  7.    
  8. }elseif($_POST["username"]=="" || $_POST["password"]==""){
  9.     header("location: index.php?errorlogin=2");    
  10. }else{  
  11.    
  12.     $ssql="select * from usuario where username='" . $_POST["username"] . "'";
  13.  
  14.     $conexion = Conectarse();
  15.     if(!$record_usuario = mysql_query($ssql)){
  16.         header("location: index.php?errorlogin=3");
  17.        
  18.     }else{
  19.        
  20.         if(mysql_num_rows($record_usuario)!=1){
  21.             header("location: index.php?errorlogin=4");
  22.            
  23.         }else{
  24.             $usuario_encontrado = mysql_fetch_array($record_usuario);
  25.            
  26.             $nivel = $usuario_encontrado["level"];
  27.             $usernameBD = $usuario_encontrado["username"];
  28.             $passwordBD = $usuario_encontrado["password"];
  29.            
  30.             if ($usuario_encontrado["password"] != md5($_POST["password"])){
  31.                 header("location: index.php?errorlogin=5");
  32.  
  33.             }else{
  34.              
  35.               session_start();
  36.              
  37.         $_SESSION["username_usuario"] = $_POST["username"];
  38.                 $_SESSION["nombre_usuario"] = $usuario_encontrado ["nombre"];
  39.                 $_SESSION["apellido_usuario"] = $usuario_encontrado ["apellido"];
  40.         $_SESSION["level_usuario"] = $usuario_encontrado ["level"];
  41.              
  42.               if($_SESSION["level_usuario"] == "1"){
  43.                 header ("Location: admin/index.php");
  44.                 }
  45.                
  46.               if($_SESSION["level_usuario"] == "2"){
  47.                 header ("Location: index2.php");
  48.                 }
  49.  
  50.             }
  51.         }
  52.     }
  53.  
  54. }
  55.  
  56. ?>

la configuracion de la BD, la tengo en el archivo conexion.php (al cual esta ingresado la funcion conectarse), obviamente tengo las tablas creadas, (id,username,password,nombre,apellido,level)

como ven en la ultima parte donde inicio la sesion, doy a elegir si el level de usuario 1 administrador, y 2 user normal.

respecto al registro de usuario anda perfecto, todo bien..
el problema es cuando uno se logea por ej. un usuario normal y va a dicha seccion, no solo puede ver las secciones de el, sino tambien las otras secciones de admin.

el archivo de authentifiacion (auth.php), lo tengo al inicio de cada pagina, es este:

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($_SESSION["level_usuario"] !== $nivel_pagina){
  4. echo "Debes estar autorizado e iniciar sesion para ver esta página. <a href='index.php'>Ingresar</a>";
  5.  
  6. }

la variable nivel_pagina, la tengo en cada pagina determinando q nivel de usuario puede ingresar.

Código PHP:
Ver original
  1. <?php
  2. //inicio de la pagina
  3.  
  4.  $nivel_pagina = 1;    
  5.  
  6. //aqui viene el archivo auth.php
  7.  
  8. ?>

el problema es q algo estoy haciendo mal, por q no me detecta q nivel de acceso tiene cada pagina

esa es mi pregunta como puedo colocar en el auth.php y el inicio de cada pagina, para determinar q usuario (osea q nivel) puede ver tal tipo de pagina y cual no.

gracias desde ya, espero q puedan ayudarme, saludos.
  #2 (permalink)  
Antiguo 14/05/2012, 15:55
 
Fecha de Ingreso: abril-2012
Mensajes: 71
Antigüedad: 12 años
Puntos: 16
Respuesta: problema con sesion de varios usuarios

yo estoy viendo un operador logico incorrecto allí en auth.php. Esto "!==" es esto "!="
fijate si es por eso (aunque debería darte error de sintaxis si lo fuese)
si no, esplica que es lo que sucede al ejecutar el todo?los usuarios acceden de igual manera a paginas que no deberían?
  #3 (permalink)  
Antiguo 14/05/2012, 16:17
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: problema con sesion de varios usuarios

prod6, !== es perfectamente válido, ya que al igual que === compara no sólo que los valores sean iguales si no además que sean del mismo tipo, así que no habría error de sintaxis.

¿Ya verificaste qué hay en $_SESSION["level_usuario"]? quizá ahí este el problema.
  #4 (permalink)  
Antiguo 14/05/2012, 16:20
Avatar de NJS
NJS
 
Fecha de Ingreso: noviembre-2011
Mensajes: 371
Antigüedad: 12 años, 5 meses
Puntos: 28
Respuesta: problema con sesion de varios usuarios

segurmanente sera por el !== tal y como te ha comentado pord6
ya que no he visto nada mas
__________________
Mejores empresas de Hosting
-=-=-=-=-=-=-=-
Empresas de Hosting
  #5 (permalink)  
Antiguo 15/05/2012, 21:39
 
Fecha de Ingreso: mayo-2012
Mensajes: 26
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: problema con sesion de varios usuarios

Genial!!! gracias prod6!! era eso no me di cuenta.
he aprendido mucho atraves de este foro,

gracias de nuevo

tbm a NJS por confirmar el error, gracias-.

quedo asi, y funciona bien.

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($_SESSION["level_usuario"] != $nivel_pagina){
  4. echo "Debes estar autorizado e iniciar sesion para ver esta página. <a href='index.php'>Ingresar</a>";
  5.  
  6. }
  #6 (permalink)  
Antiguo 16/05/2012, 22:29
 
Fecha de Ingreso: mayo-2012
Mensajes: 26
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: problema con sesion de varios usuarios

hola vuelvo nuevamente, todo andaba bien, hasta q.. paso a explicarles


el logeo ya sea de usuario o administrador, funciona bien, la redireccion y restriccion de paginas funciona bien..

el problema viene cuando uno no esta logueado

por ejemplo, el form de login lo tengo en comercio/index.php,

pero por ejemplo sin loguearme deseo entrar a la pagina del usuario comercio/user/info_.php y me da error, ya se q obviamente no se podria ingresar por q no esta autentificado, pero antes me salia con el echo

Debes estar autorizado e iniciar sesion para ver esta página.

pero ahora sale un error arriba de eso q dice:

Notice: Undefined index: level_usuario in C:\...................\comercio\auth.php on line 6

y este es el codigo del auth.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. //$nivel_pagina = 1; esta colocado en cada pagina, para darle el nivel a cada pagina
  4.  
  5. if ($_SESSION["level_usuario"] !=$nivel_pagina) {
  6. echo "Debes estar autorizado e iniciar sesion para ver esta página. <a href='index.php'>Ingresar</a>";
  7.  
  8. }

se q dice q no esta definido las variable, pero debo colocar de nuevo? o habra alguna otra forma..

por que esoo lo defini en la validacion del login justo despues del session start.. como lo pueden ver en el primer php, del primer mensaje. el level_usuario, esta definido.

espero sus respuestas, gracias desde ya.

Etiquetas: niveles, sesiones, 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 16:36.