php把session寫入資料庫的類

WBOY
發布: 2016-07-25 08:54:11
原創
704 人瀏覽過
  1. class session_handler {

  2. protected $maxlifetime = null; proted🎜> proted $dbHandle = null;

  3. public $config = null;
  4. public static function init($args) {

  5. return new self($args);
  6. } p>
  7. 公用函數__construct($args) {

  8. $this->config = $args;

  9. $this->maxlifetime = get_cfg_var("session. gc_maxlifetime ");
  10. session_set_save_handler(
  11. array($this, "open"),
  12. array($this, "close"),
  13. array($this, "read"), array($this, "read"),
  14. array($this, "write"),
  15. array($this, "destroy"),
  16. array($this, "gc"));
  17. }
  18. public function open() {
  19. $this->link = mysqli_connect(
  20. $this->config['host'],
  21. $this->config['user'],
  22. $ this->config['password'],
  23. $this->config['database']);
  24. mysqli_set_charset($this->link, "utf8");
  25. $ sql = '如果不存在`%s`則建立表(
  26. `session_id` varchar(255) NOT NULL,
  27. `session_data` text,
  28. `session_expires` char(10) NOT NULL,
  29. PRIMARY KEY ( ` session_id`)
  30. ) ENGINE=InnoDB 預設字元集=utf8 COLLATE=utf8_unicode_ci;';
  31. $sql = sprintf($sql, $this->config['table']);
  32. mysqli_query( $this->config['table']);
  33. mysqli_query( $this ->link, $sql);
  34. 回傳true;
  35. }
  36. public function close() {

  37. return true;
  38. }
  39. public function read($session_id) {

  40. if(empty($session_id)) return null;
  41. $sql = '從`%s` 選擇` session_data` AS `data`,其中`session_id` = "%s" AND `session_expires` > "%u"';

  42. $sql = sprintf($sql,
  43. mysqli_real_escape_string($this->link, $ this- >config['table']),
  44. mysqli_real_escape_string($this- >link, $session_id),
  45. time());
  46. $result = mysqli_query($ this- >link, $sql);

  47. $row = mysqli_fetch_assoc($result);
  48. return $row['data'];
  49. }
  50. public function write ($ session_id, $session_data) {

  51. if(empty($session_id)) return null;
  52. $newExpires = time() $this->maxlifetime;

  53. sql = '替換為`%s` SET `session_id` = "%s", `session_data` = "%s", `session_expires` = " %u"';
  54. $sql = sprintf($sql,
  55. mysqli_real_escape_string( $this->link, $this->config['table']),
  56. mysqli_real_escape_string($this-> ;link, $session_id),
  57. mysqli_real_escape_string($sesthis-datalink, $session_s. ,
  58. $newExpires);
  59. $result = mysqli_query($this->link, $sql);

  60. return mysqli_affected_rows($this->link);
  61. return mysqli_affected_rows($this->link);
  62. } p>
  63. public function destroy($session_id) {

  64. $sql = '從`%s` 刪除,其中`session_id` = "%s"';
  65. $sql = sprintf ($ sql,
  66. mysqli_real_escape_string($this ->link, $this->config['table']),
  67. mysqli_real_escape_string($this->link, $session_id));
  68. $result = mysqli_query ($ this->link, $sql);
  69. return mysqli_affected_rows($this->link);
  70. }
  71. public function gc() {

  72. $sql = 'DELETE來自“%s”,其中“session_expires” $sql = sprintf($sql,
  73. mysqli_real_escape_string($this->link, $this->config['table']),
  74. time());
  75. $result = mysqli_query($this->link, $sql);

  76. return mysqli_affected_rows($this->link);
  77. }
  78. }
  79. class session {
  80. public static $集合= null;
  81. public static function open($clean = false, $token = false) {

  82. if($clean) ob_end_clean();
  83. if($token) session_id($token);
  84. session_start();
  85. self::$collection = $_SESSION;
  86. }
  87. 公用靜態函數id() {

  88. $num_args = func_num_args();
  89. if($num_args) {
  90. $args = func_get_arg(0);
  91. return session_id($args);
  92. }else
  93. return session_id();
  94. }
  95. }
  96. 公用靜態函式get($name) {

  97. return isset($_SESSION[$name]) ? $_SESSION[$name] : null;
  98. }
  99. public static function set($name, $value) {

  100. $_SESSION[$name] = $value;
  101. return true;
  102. }
  103. public static function delete($name) {

  104. if(!isset($_SESSION[$name])) return null;
  105. 取消設定($_SESSION[$name]); 回傳 true; }
  106. public static function destroy() {

  107. session_destroy();
  108. }
  109. }

  110. $config = array(
  111. "host"=> "127.0 .0.1",
  112. "用戶"=>"root",
  113. "密碼"=>"123456",
  114. "資料庫"=>"測試",
  115. "字元集"= > "utf8",
  116. "table"=> "user_session");
  117. session_handler::init($config);
  118. session::open();
  119. session: :set( "profile", array("id"=> 1, "user"=> "haowei", "vip-level"=> 6));
複製程式碼


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!