Maison >développement back-end >tutoriel php >Comment écrire une session dans la base de données en php
Cet article présente principalement la méthode d'écriture de session dans une base de données en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde. Cet article présente l'exemple d'écriture de données en phpsessionLe code est le suivant :
<?php # # codeMaker Alpha 0.1.1 ( haowei.me ) # This framework comply with the GPL license agreement # class session_handler { protected $maxlifetime = null; protected $dbHandle = null; public $config = null; public static function init($args) { return new self($args); } public function __construct($args) { $this->config = $args; $this->maxlifetime = get_cfg_var("session.gc_maxlifetime"); session_set_save_handler( array($this, "open"), array($this, "close"), array($this, "read"), array($this, "write"), array($this, "destroy"), array($this, "gc")); } public function open() { $this->link = mysqli_connect( $this->config['host'], $this->config['user'], $this->config['password'], $this->config['database']); mysqli_set_charset($this->link, "utf8"); $sql = 'CREATE TABLE IF NOT EXISTS `%s` ( `session_id` varchar(255) NOT NULL, `session_data` text, `session_expires` char(10) NOT NULL, PRIMARY KEY (`session_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;'; $sql = sprintf($sql, $this->config['table']); mysqli_query($this->link, $sql); return true; } public function close() { return true; } public function read($session_id) { if(empty($session_id)) return null; $sql = 'SELECT `session_data` AS `data` FROM `%s` WHERE `session_id` = "%s" AND `session_expires` > "%u"'; $sql = sprintf($sql, mysqli_real_escape_string($this->link, $this->config['table']), mysqli_real_escape_string($this->link, $session_id), time()); $result = mysqli_query($this->link, $sql); $row = mysqli_fetch_assoc($result); return $row['data']; } public function write($session_id, $session_data) { if(empty($session_id)) return null; $newExpires = time() + $this->maxlifetime; $sql = 'REPLACE INTO `%s` SET `session_id` = "%s", `session_data` = "%s", `session_expires` = "%u"'; $sql = sprintf($sql, mysqli_real_escape_string($this->link, $this->config['table']), mysqli_real_escape_string($this->link, $session_id), mysqli_real_escape_string($this->link, $session_data), $newExpires); $result = mysqli_query($this->link, $sql); return mysqli_affected_rows($this->link); } public function destroy($session_id) { $sql = 'DELETE FROM `%s` WHERE `session_id` = "%s"'; $sql = sprintf($sql, mysqli_real_escape_string($this->link, $this->config['table']), mysqli_real_escape_string($this->link, $session_id)); $result = mysqli_query($this->link, $sql); return mysqli_affected_rows($this->link); } public function gc() { $sql = 'DELETE FROM `%s` WHERE `session_expires` < "%u"'; $sql = sprintf($sql, mysqli_real_escape_string($this->link, $this->config['table']), time()); $result = mysqli_query($this->link, $sql); return mysqli_affected_rows($this->link); } } class session { public static $collection = null; public static function open($clean = false, $token = false) { if($clean) ob_end_clean(); if($token) session_id($token); session_start(); self::$collection = $_SESSION; } public static function id() { $num_args = func_num_args(); if($num_args) { $args = func_get_arg(0); return session_id($args); }else{ return session_id(); } } public static function get($name) { return isset($_SESSION[$name]) ? $_SESSION[$name] : null; } public static function set($name, $value) { $_SESSION[$name] = $value; return true; } public static function delete($name) { if(!isset($_SESSION[$name])) return null; unset($_SESSION[$name]); return true; } public static function destroy() { session_destroy(); } } $config = array( "host"=> "127.0.0.1", "user"=> "root", "password"=> "123456", "database"=> "test", "charset"=> "utf8", "table"=> "user_session"); session_handler::init($config); session::open(); session::set("profile", array("id"=> 1, "user"=> "haowei", "vip-level"=> 6));
Résumé : C'est tout pour cet article. Nous espérons que l'ensemble du contenu de l'article sera utile à l'étude de chacun.
Recommandations associées :
Méthode de valeurs aléatoires PHP Array et exemple simple
Résumé des méthodes de traitement du système de fichiers PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!