usuarios tutorial pro plugin personalizados fields custom campos advanced php session symfony pdo session-variables

php - tutorial - campos personalizados usuarios wordpress



Symfony2: ¿Cómo guardar un atributo de sesión como un campo personalizado en DB, con un PdoSessionStorage personalizado? (2)

¡Lo encontré!

Mi CustomPdoSessionStorage Class amplía NativeSessionStorage , que administra la matriz $_SESSION (lectura, escritura, etc.).

Entonces, desde mi clase puedo usar $this->read(''userId'') y almacenarlo en mi DB.

Así que muchas gracias @hakre

Tengo una clase personalizada que extiende PdoSessionStorage, pero no sé cómo capturar los atributos de la sesión para guardarlos como campos independientes en la base de datos.

Otra posibilidad es deserializar los datos de sesión en el método sessionWrite ($ if, $ data) de mi clase PdoSessionStorage personalizada. Pero no sé cómo deserializar la cadena $ data para obtener solo los datos que quiero.

Intenté esto:

unserialize($data);

y esto arrojame el siguiente error:

Error fatal: excepción no detectada ''ErrorException'' con el mensaje ''Aviso: unserialize () [function.unserialize]: Error en el desplazamiento 0 de 82 bytes en /myserver/myapp/src/app/myBundle/myCustomPdoSessionStorage.php línea 220'' in / myserver /myapp/vendor/symfony/src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php:65 Stack trace: # 0 [función interna]: Symfony / Component / HttpKernel / Debug / ErrorHandler-> handle (8, ''unserialize ( ) [... '','' / Applications / M ... '', 220, Array) # 1 /myserver/myapp/src/app/myBundle/myCustomPdoSessionStorage.php(220): unserialize ('' _ symfony2 | a: 3: {... '') # 2 [función interna]: app / myBundle / myCustomPdoSessionStorage-> sessionWrite ('' 72b823b39d316dd ... '','' _symfony2 | a: 3: {... '') # 3 {main} lanzada / myserver / myapp / vendor / symfony / src / Symfony / Component / HttpKernel / Debug / ErrorHandler.php en la línea 65

¿Alguien puede ayudarme por favor?


Estás usando la función incorrecta aquí. unserialize es para valores serializados, pero no para sesiones. Incluso esos dos están cerca el uno del otro, son diferentes.

Es posible que esté buscando la función session_decode lugar. Tenga cuidado de que se serialice en el $_SESSION _SESSION, así que es posible que desee envolverlo:

function unserialize_session($data) { $hasBuffer = isset($_SESSION); $hasBuffer && $buffer = $_SESSION; session_decode($data); $session = $_SESSION; $hasBuffer ? $_SESSION = $buffer : unset($_SESSION); return $session; }

La contraparte es session_encode que funciona de manera similar.

Consulte también: Cómo deserializar datos de sesión en un controlador personalizado