Heim  >  Artikel  >  Backend-Entwicklung  >  So schreiben Sie eine Sitzung in eine Datenbank in PHP

So schreiben Sie eine Sitzung in eine Datenbank in PHP

墨辰丷
墨辰丷Original
2018-06-05 10:54:261737Durchsuche

Dieser Artikel stellt hauptsächlich die Methode zum Schreiben einer Sitzung in eine Datenbank in PHP vor. Ich hoffe, dass er für alle hilfreich ist. Das Beispiel dieses Artikels stellt die Schreibdaten von phpsession vorDer Code lautet wie folgt:

<?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[&#39;host&#39;], 
    $this->config[&#39;user&#39;], 
    $this->config[&#39;password&#39;], 
    $this->config[&#39;database&#39;]);
    mysqli_set_charset($this->link, "utf8");
    $sql = &#39;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;&#39;;
    $sql = sprintf($sql, $this->config[&#39;table&#39;]);
    mysqli_query($this->link, $sql);
    return true;
  }
   
  public function close() {
    return true;
  }
   
   
  public function read($session_id) {
    if(empty($session_id)) return null;
     
    $sql = &#39;SELECT `session_data` AS `data` FROM `%s` WHERE `session_id` = "%s" AND `session_expires` > "%u"&#39;;
    $sql = sprintf($sql, 
    mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
    mysqli_real_escape_string($this->link, $session_id),
    time());
     
    $result = mysqli_query($this->link, $sql);
    $row = mysqli_fetch_assoc($result);
    return $row[&#39;data&#39;];
     
  }
   
  public function write($session_id, $session_data) {
    if(empty($session_id)) return null;
     
    $newExpires = time() + $this->maxlifetime;
    $sql = &#39;REPLACE INTO `%s` SET `session_id` = "%s", `session_data` = "%s", `session_expires` = "%u"&#39;;
    $sql = sprintf($sql, 
    mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
    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 = &#39;DELETE FROM `%s` WHERE `session_id` = "%s"&#39;;
    $sql = sprintf($sql, 
    mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
    mysqli_real_escape_string($this->link, $session_id));
 
    $result = mysqli_query($this->link, $sql);
    return mysqli_affected_rows($this->link);
  }
   
  public function gc() {
    $sql = &#39;DELETE FROM `%s` WHERE `session_expires` < "%u"&#39;;
    $sql = sprintf($sql, 
    mysqli_real_escape_string($this->link, $this->config[&#39;table&#39;]), 
    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));

Zusammenfassung: Das Obige ist die Zusammenfassung dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

php-Array-Zufallswertmethode und einfaches Beispiel

Detaillierte grafische Erläuterung der Methoden zum Ersetzen, Teilen und Verbinden von PHP-Strings

Zusammenfassung der PHP-Dateisystemverarbeitungsmethoden

Das obige ist der detaillierte Inhalt vonSo schreiben Sie eine Sitzung in eine Datenbank in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn