SessionHandler::write
寫會話數據
函數名稱:SessionHandler::write()
適用版本:PHP 5 >= 5.4.0, PHP 7
函數說明:SessionHandler::write() 方法用於寫入session 數據。該方法由會話處理程序類實現,用於將會話數據保存到持久存儲中。
語法:SessionHandler::write(string $session_id, string $session_data): bool
參數:
返回值:
示例:
<?php class MySessionHandler implements SessionHandlerInterface { // 实现SessionHandlerInterface 接口中的write 方法public function write($session_id, $session_data) { // 将会话数据保存到数据库或其他持久存储中// 假设这里使用数据库存储会话数据$db = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password'); $stmt = $db->prepare("INSERT INTO sessions (session_id, session_data) VALUES (:session_id, :session_data)"); $stmt->bindParam(':session_id', $session_id); $stmt->bindParam(':session_data', $session_data); return $stmt->execute(); } } // 设置自定义的会话处理程序$handler = new MySessionHandler(); session_set_save_handler($handler, true); // 启动会话session_start(); // 修改会话数据$_SESSION['username'] = 'john'; // 手动调用write 方法将会话数据写入持久存储session_write_close(); ?>
上述示例中,我們自定義了一個會話處理程序類MySessionHandler,並實現了SessionHandlerInterface 接口中的write 方法。在write 方法中,我們使用PDO 連接到數據庫,並將會話ID和會話數據插入到sessions 表中。
然後,我們通過session_set_save_handler() 函數將自定義的會話處理程序設置為當前會話的處理程序。接著,我們啟動會話並修改會話數據。最後,通過調用session_write_close() 方法手動調用write 方法,將會話數據寫入持久存儲。
請注意,使用自定義的會話處理程序需要在session_start() 之前調用session_set_save_handler()。此外,如果使用自定義的會話處理程序,請確保在腳本結束之前調用session_write_close() 方法,以確保會話數據被寫入持久存儲。