Como puedo obtener el valor de las variables de sesion en drupal 8

AlvaroDev's picture

Saludos, estoy trabajando en un sitio que ya antes otros desarrolladores había trabajado, el problema es que dejaron cosas hechas de un modo en que no se deberían hacer y ya hay que seguir trabajandolo así.

Necesito saber como hago para obtener una variable de sesión que me identifique al usuario, estuve viendo que hay una tabla en la base de datos que se llama sessions, deduzco que en esa tabla se guarda el valor del id de sesión de cada usuario, quisiera saber como hago para obtener ese valor??

O de que manera eso se guarda en variables de session, ya que cuando imprimo la variable $_SESSION no me arroja el id del usuario.

Lo que me muestra es esto

Array
(
    [_sf2_attributes] => Array
        (
        )

    [_sf2_flashes] => Array
        (
        )

    [_sf2_meta] => Array
        (
            [u] => 1506122831
            [c] => 1506122831
            [l] => 2000000
        )

)

Como puedo entonces obtener el id de la session??

Comments

$user=

jhonatanfdez's picture

$user= \Drupal::currentUser();

Var_dump($user);
Si quieres acceser al uid por ejemplo seria asi.

Echo $user->uid;

Como entonces puedo manejar las variables de sesión?

AlvaroDev's picture

Hola, gracias por la respuesta, ya eh probado de la manera que me dices y efectivamente puedo obtener el uid, pero no me percataba de que el uid lo asigna a usuario registrados, lo que sucede es que necesito obtener un identificador para usuarios nos registrados también, en sitios distintos lo hacia a travez de php con $_SESSION, pero no me a funciona en drupal, de que manera lo puedo hacer con drupal???

session_id() de PHP

juankvillegas's picture

En ese caso puede usar la función session_id() de PHP

Hola, obtengo el mismo

AlvaroDev's picture

Hola, obtengo el mismo resultado que cuando hago algo como esto

$_SESSION['usuario'] = 'algo aqui';

resulta que cuando asigno ese valor, lo guardo en una base de datos, ese valor se guarda en la pagina /publicaciones luego necesito ir a la pagina /compras, en donde necesito consultar $_SESSION['usuario'], pero al hacer esto

print_r($_SESSION);

obtengo esto

Array
(
)

no se si es por tratarse de drupal que "me borra" lo que tengo en session, debo manejarlo en variables de session porque se requiere que funcione sin necesidad que el usuario se registre en el sitio.

con esto se obtiene el

jhonatanfdez's picture

con esto se obtiene el csrftoken el cual es unico para cada usuario a excepcion del usuario anonimo (usuario no registrado).

$valor=Drupal::csrfToken();
echo ($valor->get('csrf_token'));

Ojalá y esto te ayude

quindio's picture

No trabajo con Drupal desde hace más de un año, pero encontré esta información. Dice que
Drupal se encarga de comenzar la sesión:
You don't need to instantiate a session object or start a session. Drupal adds a session to each request in the bootstrap process in Drupal\Core\StackMiddleware\Session::handle()and starts the session.

Dice que puedes conseguir la session con este code:
You can get it with $session = \Drupal::request()->getSession()

Ojalá y esto te ayude

quindio's picture

No trabajo con Drupal desde hace más de un año, pero encontré esta información. Dice que
Drupal se encarga de comenzar la sesión:
You don't need to instantiate a session object or start a session. Drupal adds a session to each request in the bootstrap process in Drupal\Core\StackMiddleware\Session::handle()and starts the session.

Dice que puedes conseguir la session con este code:
You can get it with $session = \Drupal::request()->getSession()

Ojalá y esto te ayude

quindio's picture

No trabajo con Drupal desde hace más de un año, pero encontré esta información. Dice que
Drupal se encarga de comenzar la sesión:
You don't need to instantiate a session object or start a session. Drupal adds a session to each request in the bootstrap process in Drupal\Core\StackMiddleware\Session::handle()and starts the session.

Dice que puedes conseguir la session con este code:
You can get it with $session = \Drupal::request()->getSession()

Ojalá y esto te ayude

quindio's picture

No trabajo con Drupal desde hace más de un año, pero encontré esta información. Dice que
Drupal se encarga de comenzar la sesión:
You don't need to instantiate a session object or start a session. Drupal adds a session to each request in the bootstrap process in Drupal\Core\StackMiddleware\Session::handle()and starts the session.

Dice que puedes conseguir la session con este code:
You can get it with $session = \Drupal::request()->getSession()

Okay me sirve

AlvaroDev's picture

Okay, gracias, de este modo obtengo mucha info importante, pero ahora la duda que tengo es como uso todo lo que me esta mostrando este objeto, lo que necesito es que identificar a cada usuario sea registrado o no registrado que este el sitio web para que a ese usuario le asigne ciertos datos en la base de datos.

En este vídeo explico algo

jhonatanfdez's picture

En este vídeo explico algo relacionado. En este vídeo hago el ejemplo con un nodo, en este caso tu puedes crear un tipo de contenido específico y los datos que necesites, lo creas de wsta manera.

https://youtu.be/ZnlWAuTwzXg