【发布时间】:2014-08-08 06:05:57
【问题描述】:
我正在尝试设置一个自定义会话安全处理程序,该处理程序到目前为止有效。但我不想以 PHP 会话格式存储数据,而是以纯 JSON 格式存储数据。如何更改读写函数以将 php 会话数据编码/解码为 json。
function write($sessionId, $data) {
$db = new PDO("mysql:host=myhost;dbname=mydb", "myuser", "mypassword");
$sql = "INSERT INTO session SET session_id =" . $db->quote($sessionId) . ", session_data =" . $db->quote($data) . " ON DUPLICATE KEY UPDATE session_data =" . $db->quote($data);
$db->query($sql)
}
function read($sessionId) {
$db = new PDO("mysql:host=myhost;dbname=mydb", "myuser", "mypassword");
$sql = "SELECT session_data FROM session where session_id =" . $db->quote($sessionId);
$result = $db->query($sql);
$data = $result->fetchColumn();
$result->closeCursor();
return $data;
}
函数来自tutorial。作者说:
PHP 将序列化的数据传递给 write 函数,并期望它从 read 函数中序列化回来,但这并不意味着您必须以这种方式存储它。您可以在写入回调中立即对数据进行反序列化,然后根据数据执行一些操作或根据需要存储它。
我尝试了以下我认为可以完成工作的功能?
- json_encode()
- json_decode()
- 序列化()
- 反序列化()
编辑
如果我不尝试对数据进行 json_encode,它会按照以下格式写入 db:
auth|b:1;LAST_ACTIVITY|i:1407480463;
【问题讨论】: