Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] $_SESSION 'level' en PHP 7

Estas en el tema de $_SESSION 'level' en PHP 7 en el foro de PHP en Foros del Web. Hola Tengo el siguiente problema, antes funcionaba todo bien, pero cambio la plataforma PHP 5 a PHP 7 y dejo de funcionar esta opcion, podrian ...
  #1 (permalink)  
Antiguo 14/10/2016, 13:56
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 653
Antigüedad: 19 años, 5 meses
Puntos: 6
$_SESSION 'level' en PHP 7

Hola Tengo el siguiente problema, antes funcionaba todo bien, pero cambio la plataforma PHP 5 a PHP 7 y dejo de funcionar esta opcion, podrian ayudar por favor. gracias.


Código PHP:
Para el Usuario Administrador
   <?php
   
if ($_SESSION['level'] == 'Administrador')    {    ?>
   <a href='C.php'> Contactos </a>
   <?php  ?>

Para el Usuario Invitado:
   <?php
   
if ($_SESSION['level'] == 'Invitado')    {    ?>
   <a href='I.php'> Contactos </a>
   <?php  ?>
  #2 (permalink)  
Antiguo 14/10/2016, 14:10
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: $_SESSION 'level' en PHP 7

revisa si tienes activa las sesiones automáticas, aunque es probable que en php7 sean eliminadas, por lo cual investiga, en tal caso tendrás que usar session_start();
  #3 (permalink)  
Antiguo 14/10/2016, 14:49
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 653
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: $_SESSION 'level' en PHP 7

Cita:
Iniciado por sustentio Ver Mensaje
revisa si tienes activa las sesiones automáticas, aunque es probable que en php7 sean eliminadas, por lo cual investiga, en tal caso tendrás que usar session_start();

Hola Gracias por responder, la verdad nose que habra pasado cambio y dejo de funcionar, mira le cambie asi... "if (!$_S....." y funciona, lo malo que cualquier nivel lo puede ver

Código PHP:
<?php 
   
if (!$_SESSION['level'] == 'Administrador')    {    ?> 
   <a href='C.php'> Contactos </a> 
   <?php  ?>
  #4 (permalink)  
Antiguo 14/10/2016, 20:16
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 5 meses
Puntos: 91
Respuesta: $_SESSION 'level' en PHP 7

en tu condicion final, estas especificando que si no existe la Session Level muestre ese link
Código PHP:
Ver original
  1. if (!$_SESSION['level'] == 'Administrador')

Prueba con esto, y dime que tal ;)
Código PHP:
Ver original
  1. <?php
  2.   $_SESSION['level'] = 'Administrador';
  3.   $_SESSION['levelI'] = 'Invitado';
  4. ?>
  5.    <?php
  6.    if ($_SESSION['level'] == 'Administrador')    {    ?>
  7.    <a href='C.php'> Contactos </a>
  8.    <?php  } ?>
  9.  
  10.    <?php
  11.    if ($_SESSION['levelI'] == 'Invitado')    {    ?>
  12.    <a href='I.php'> Contactos </a>
  13.    <?php  } ?>
  #5 (permalink)  
Antiguo 15/10/2016, 02:09
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 653
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: $_SESSION 'level' en PHP 7

Cita:
Iniciado por AngelKrak Ver Mensaje
en tu condicion final, estas especificando que si no existe la Session Level muestre ese link
Código PHP:
Ver original
  1. if (!$_SESSION['level'] == 'Administrador')

Prueba con esto, y dime que tal ;)
Código PHP:
Ver original
  1. <?php
  2.   $_SESSION['level'] = 'Administrador';
  3.   $_SESSION['levelI'] = 'Invitado';
  4. ?>
  5.    <?php
  6.    if ($_SESSION['level'] == 'Administrador')    {    ?>
  7.    <a href='C.php'> Contactos </a>
  8.    <?php  } ?>
  9.  
  10.    <?php
  11.    if ($_SESSION['levelI'] == 'Invitado')    {    ?>
  12.    <a href='I.php'> Contactos </a>
  13.    <?php  } ?>

Con esta opcion me muestra ambos accesos
Solo tengo un "LEVEL" -> $_SESSION['level']
antes con php5 funcionaba bien pero cambio a php7
y dejo de funcionar el codigo.

Código PHP:
Ver original
  1. <?php
  2.   $_SESSION['level'] = 'Administrador';
  3.   $_SESSION['level'] = 'Invitado'; // Probe asi y nada
  4.   $_SESSION['levelI'] = 'Invitado'; // Esto no existe 'levelI'
  5. ?>
  6. <table><tr>
  7.    
  8.    <?php
  9.    if ($_SESSION['level'] == 'Administrador')    {    ?>
  10.    <td> C. Operacion </td>
  11.    <?php  } ?>
  12.  
  13.  
  14.    <?php
  15.    if ($_SESSION['levelI'] == 'Invitado')    {  // Cambie a 'level' y nada   ?>
  16.    <td> C. Informacion </td></tr>
  17.    <?php  } ?>
  18.  
  19.  
  20.    
  21.    <?php
  22.   $_SESSION['level'] = 'Administrador';
  23.   $_SESSION['levelI'] = 'Invitado';
  24.   ?>
  25.    <?php
  26.    if ($_SESSION['level'] == 'Administrador')    {     ?>
  27.    <tr> <td><a href='I.php'>Link 1  UNO</a></td>  
  28.    <?php  } ?>
  29.  
  30.    <?php
  31.    if ($_SESSION['levelI'] == 'Invitado')    {   // Cambie a 'level' y nada  ?>
  32.    <td><a href='C.php'>Link 2  DOS</a></td>
  33.    <?php  } ?>
  34.    
  35. </tr></table>

Si uso 'level' y 'levelI' me muestra ambos:

Ahora sale asi todos juntos:
||||||||||||||||||||||||||||||||||||
|| C. Operacion |||| C. Operacion ||
|| Link 1 UNO |||| Link 2 DOS ||
||||||||||||||||||||||||||||||||||||

Para Administrador debe mostrar solo esto usando solo 'level':
||||||||||||||||||
|| C. Operacion ||
|| Link 1 UNO ||
||||||||||||||||||

Para Invitado debe mostrar solo esto usando solo 'level':
||||||||||||||||||
|| C. Operacion ||
|| Link 2 DOS ||
||||||||||||||||||
  #6 (permalink)  
Antiguo 15/10/2016, 05:52
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: $_SESSION 'level' en PHP 7

Empecemos por lo básico. Haz un print_r a $_SESSION y enseñanoslo para ver que tenemos.

Código PHP:
Ver original
  1. <?php
  2. echo '<pre>';
  3. print_r ( $_SESSION );
  4. echo '</pre>';
  5.  
  6. /* RESTO DEL CÓDIGO */

Por qué el error a lo mejor no está en lo que nos muestras, puede que no se estén creando bien las variables de sesión.
__________________
Unset($vida['malRollo']);
  #7 (permalink)  
Antiguo 15/10/2016, 06:33
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 5 meses
Puntos: 91
Respuesta: $_SESSION 'level' en PHP 7

Las variables de las sessiones tu las creas, no es cuestion de si existe o no, Por ejemplo
Código PHP:
Ver original
  1. $_SESSION['soyUnaSesion'];
  2. $_SESSION['SoyElHermano'];
Con tan solo eso, ya creaste 2 sesiones, una llamada soyUnaSesion y la otra SoyElHermano

Código PHP:
Ver original
  1. $_SESSION['level'] = 'Administrador';
  2.   $_SESSION['level'] = 'Invitado'; // Probe asi y nada
Con ese codigo primero creas una sesion llamada level con el contenido Administrador
y después reemplazas ese Contenido Administrador por Invitado.
Asi que al final la Sesion tiene como Contenido Invitado y no Administrador

Lo que tu ocuparias es una Administracion donde los usuarios tengan Diferentes Niveles y que asi se creen esas sesiones llamadas level con Los Leveles que tengan los usuarios y no los crees manualmente

Si quieres eso de la Administracion, aqui tienes un Tutorial que hice para un Sistema de Registro y Login, ya solo te faltaria que lo modifiques a tu Gusto para los Levels que quieres ;)
Tutorial - Sistema de Registro y Login[PHP/MYSQLI
Si tienes alguna duda sobre mi Tutorial o quieres ayuda con lo que quieres, puedes Contactarme en mi Facebook

Una Cosa mas, En mi codigo, cree 2 Sesiones Diferentes por lo tanto esta bien que mostrara ambos, eso quiere decir que las variables sesiones si existian y no era ese el problema ;)
  #8 (permalink)  
Antiguo 15/10/2016, 09:50
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 653
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: $_SESSION 'level' en PHP 7

Cita:
Iniciado por xerifandtomas Ver Mensaje
Empecemos por lo básico. Haz un print_r a $_SESSION y enseñanoslo para ver que tenemos.

Código PHP:
Ver original
  1. <?php
  2. echo '<pre>';
  3. print_r ( $_SESSION );
  4. echo '</pre>';
  5.  
  6. /* RESTO DEL CÓDIGO */

Por qué el error a lo mejor no está en lo que nos muestras, puede que no se estén creando bien las variables de sesión.


Hola xerifandtomas, este es el codigo:


Aqui el codigo LOGIN

Código PHP:
Ver original
  1. <?php
  2. // Conexión a la base de datos
  3. include_once('Conexion.php'); // Coneción
  4. // Tomar el valor de la entrada
  5. $user = $_POST['user'];
  6. $userpass = md5($_POST['userpass']);
  7. // Utilizar mysql_real_escape_string para evitar la inyección sql
  8. $user = mysqli_real_escape_string($conexion, $user);
  9. $userpass = mysqli_real_escape_string($conexion, $userpass);
  10. // Comprobar en la base de datos si se introduce el usuario o no
  11. $query = "SELECT * FROM LISTUNIC WHERE user = '$user' && userpass = '$userpass'";
  12. $queryLogin = mysqli_query($conexion, $query);
  13. // Captura de datos
  14. $data = mysqli_fetch_array($queryLogin);
  15. // Si se introduce una consulta usuario/correcto existente
  16. if(mysqli_num_rows($queryLogin) == 1){
  17.  
  18.     // Crear el registro, el usuario se registra tiene el nivel
  19.     if ($data['level'] == 'Administrador') { // if ($data['level'] == 1) {
  20.     // El usuario se registra el nivel de administrador, va a la página de administración de usuario
  21.  
  22.         // Inicio de sesión
  23.         session_start();
  24.         // Período de sesiones para el nombres de usuario
  25.         $_SESSION['user'] = $data['user'];
  26.         // Nivel de sesión, para comprobar en las siguientes páginas
  27.         $_SESSION['listaid'] = $data['listaid'];
  28.         $_SESSION['level'] = $data['level'];
  29.         $_SESSION['nombres'] = $data['nombres'];
  30.         $_SESSION['apellidos'] = $data['apellidos'];
  31.         // Redirigir a la página de administración
  32.         header('location:admin/index.php'); // Session para Administrador
  33.     }
  34.     else{
  35.         // El usuario está conectado nivel 2, significa que el usuario normal no tiene acceso de administrador
  36.         // Inicio de sesión
  37.         session_start();
  38.         // Período de sesiones para el nombres de usuario
  39.         $_SESSION['user'] = $data['user'];
  40.         // Nivel de sesión, para comprobar en las siguientes páginas
  41.         $_SESSION['listaid'] = $data['listaid'];
  42.         $_SESSION['level'] = $data['level'];
  43.         $_SESSION['nombres'] = $data['nombres'];
  44.         $_SESSION['apellidos'] = $data['apellidos'];
  45.         // Redirigir a la página de administración
  46.         header('location:admin/index.php'); // Session para Invitado
  47.     }
  48. }
  49. else{
  50.     // Si el nombre de usuario y la contraseña es incorrecta o el usuario no está disponible, enviar un mensaje de error
  51.     header('location:index.php?msj=mmm');
  52. }
  53. ?>

Antes de cambiar a php7 funcionaba todo bien de este modo:
pero ahora ya no.

Código PHP:
Ver original
  1. <table><tr>
  2.    
  3.    <?php
  4.    if ($_SESSION['level'] == 'Administrador')    {    ?>
  5.    <td> C. Operacion </td>
  6.    <?php  } ?>
  7.  
  8.    <?php
  9.    if ($_SESSION['level'] == 'Invitado')    {  // Invitado   ?>
  10.    <td> C. Informacion </td></tr>
  11.    <?php  } ?>
  12.  
  13.    <?php
  14.    if ($_SESSION['level'] == 'Administrador')    {     ?>
  15.    <tr> <td><a href='I.php'>Link 1  UNO</a></td>  
  16.    <?php  } ?>
  17.  
  18.    <?php
  19.    if ($_SESSION['level'] == 'Invitado')    {   // Invitado  ?>
  20.    <td><a href='C.php'>Link 2  DOS</a></td>
  21.    <?php  } ?>
  #9 (permalink)  
Antiguo 15/10/2016, 11:18
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 653
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: $_SESSION 'level' en PHP 7

Cita:
Iniciado por AngelKrak Ver Mensaje
Las variables de las sessiones tu las creas, no es cuestion de si existe o no, Por ejemplo
Código PHP:
Ver original
  1. $_SESSION['soyUnaSesion'];
  2. $_SESSION['SoyElHermano'];
Con tan solo eso, ya creaste 2 sesiones, una llamada soyUnaSesion y la otra SoyElHermano

Código PHP:
Ver original
  1. $_SESSION['level'] = 'Administrador';
  2.   $_SESSION['level'] = 'Invitado'; // Probe asi y nada
Con ese codigo primero creas una sesion llamada level con el contenido Administrador
y después reemplazas ese Contenido Administrador por Invitado.
Asi que al final la Sesion tiene como Contenido Invitado y no Administrador

Lo que tu ocuparias es una Administracion donde los usuarios tengan Diferentes Niveles y que asi se creen esas sesiones llamadas level con Los Leveles que tengan los usuarios y no los crees manualmente

Si quieres eso de la Administracion, aqui tienes un Tutorial que hice para un Sistema de Registro y Login, ya solo te faltaria que lo modifiques a tu Gusto para los Levels que quieres ;)
Tutorial - Sistema de Registro y Login[PHP/MYSQLI
Si tienes alguna duda sobre mi Tutorial o quieres ayuda con lo que quieres, puedes Contactarme en mi Facebook

Una Cosa mas, En mi codigo, cree 2 Sesiones Diferentes por lo tanto esta bien que mostrara ambos, eso quiere decir que las variables sesiones si existian y no era ese el problema ;)

Hola AngelKrak, pense que se podria arreglar lo que tenia, igual gracias
  #10 (permalink)  
Antiguo 15/10/2016, 14:43
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: $_SESSION 'level' en PHP 7

Hola pilucho,

xerifandtomas te pedía que hicieras algo que no has hecho, si no lo haces, no te podrá ayudar...

Cita:
Iniciado por xerifandtomas Ver Mensaje
Empecemos por lo básico. Haz un print_r a $_SESSION y enseñanoslo para ver que tenemos.

Código PHP:
Ver original
  1. <?php
  2. echo '<pre>';
  3. print_r ( $_SESSION );
  4. echo '</pre>';
  5.  
  6. /* RESTO DEL CÓDIGO */

Por qué el error a lo mejor no está en lo que nos muestras, puede que no se estén creando bien las variables de sesión.
Yo en tu lugar leería detenidamente las respuestas y seguiría las instrucciones porque si no es muy difícil prestar ayuda.
  #11 (permalink)  
Antiguo 15/10/2016, 14:49
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 653
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: $_SESSION 'level' en PHP 7

Cita:
Iniciado por rbczgz Ver Mensaje
Hola pilucho,

xerifandtomas te pedía que hicieras algo que no has hecho, si no lo haces, no te podrá ayudar...



Yo en tu lugar leería detenidamente las respuestas y seguiría las instrucciones porque si no es muy difícil prestar ayuda.
Hola rbczgz, disculpa pense que lo habia copiado.

este es el resultado.

Código PHP:

Array
(
    [
user] => pilucho
[listaid] => 1
    
[level] => Administrador
    
[nombres] => Paco
    
[apellidos] => Perez


Última edición por pilucho; 15/10/2016 a las 14:49 Razón: space
  #12 (permalink)  
Antiguo 15/10/2016, 15:17
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 5 meses
Puntos: 91
Respuesta: $_SESSION 'level' en PHP 7

Hice una prueba rapida de tu Codigo y a mi me funciona bien, las Sessiones se guardan bien


  #13 (permalink)  
Antiguo 15/10/2016, 15:31
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 653
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: $_SESSION 'level' en PHP 7

Cita:
Iniciado por AngelKrak Ver Mensaje
Hice una prueba rapida de tu Codigo y a mi me funciona bien, las Sessiones se guardan bien



CLaRO Antes de cambiar a PHP7 funcionaba bien despues cambio el servidor a php7
y las opciones de administrador e invitado dejaron de funcionar, y probando en otro lado con php5 si funciona, la pregunta es por que dejo de funcionar con php7

deberia funcionar en php 7 del mismo modo que el php5
que habra pasado?

Para Administrador debe mostrar solo esto usando solo 'level':
||||||||||||||||||
|| C. Operacion ||
|| Link 1 UNO ||
||||||||||||||||||

Para Invitado debe mostrar solo esto usando solo 'level':
||||||||||||||||||
|| C. Operacion ||
|| Link 2 DOS ||
||||||||||||||||||
  #14 (permalink)  
Antiguo 15/10/2016, 17:58
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 5 meses
Puntos: 91
Respuesta: $_SESSION 'level' en PHP 7

si quieres que te ayude mejor pasame la pagina completa con Base de Datos, para ver yo desde aqui cual es el problema que tienes

Mi Facebook
  #15 (permalink)  
Antiguo 15/10/2016, 20:58
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 653
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: $_SESSION 'level' en PHP 7

Ya lo solucione, muchas gracias a todos por la gran ayuda que me brindaron.

El error era mio, disculpen.

recuerdo que habia hecho un pequeño cambio de la palabra "level" a "leve1", eso era todo el problema, gracias a todos.

Etiquetas: Ninguno
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 02:59.