当前位置:Gxlcms > PHP教程 > 将session存储到数据库中

将session存储到数据库中

时间:2021-07-01 10:21:17 帮助过:17人阅读

Sql语句代码

  1. CREATE TABLE sessions (
  2. id CHAR(32) NOT NULL,
  3. data TEXT,
  4. last_accessed TIMESTAMP NOT NULL,
  5. PRIMARY KEY (id)
  6. );

自定义会话处理代码

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: michaeldu
  5. * Date: 15/7/14
  6. * Time: 下午2:57
  7. */
  8. $sdbc = NULL;
  9. function open_session() {
  10. global $sdbc;
  11. $sdbc = mysqli_connect('192.168.31.172', 'root', 'root', 'phpadvanced');
  12. return true;
  13. }
  14. function close_session() {
  15. global $sdbc;
  16. return mysqli_close($sdbc);
  17. }
  18. function read_session($sid) {
  19. global $sdbc;
  20. $q = sprintf('SELECT data FROM sessions WHERE id="%s"', mysqli_real_escape_string($sdbc, $sid));
  21. $r = mysqli_query($sdbc, $q);
  22. if (mysqli_num_rows($r) == 1) {
  23. list($data) = mysqli_fetch_array($r, MYSQLI_NUM);
  24. return $data;
  25. } else {
  26. return '';
  27. }
  28. }
  29. function write_session($sid, $data) {
  30. global $sdbc;
  31. $q = sprintf('REPLACE INTO sessions (id, data) VALUES ("%s", "%s")', mysqli_real_escape_string($sdbc, $sid), mysqli_real_escape_string($sdbc, $data));
  32. $r = mysqli_query($sdbc, $q);
  33. return true;
  34. }
  35. function destroy_session($sid) {
  36. global $sdbc;
  37. $q = sprintf('DELETE FROM session WHERE id="%s"', mysqli_real_escape_string($sdbc, $sid));
  38. $r = mysqli_query($sdbc, $q);
  39. $_SESSION = array();
  40. return true;
  41. }
  42. function clean_session($expire) {
  43. global $sdbc;
  44. $q = sprintf('DELETE FROM sessions WHERE DATE_ADD(last_accessed, INTERVAL %d SECOND) < NOW()', (int)$expire);
  45. $r = mysqli_query($sdbc, $q);
  46. return true;
  47. }
  48. session_set_save_handler('open_session', 'close_session', 'read_session', 'write_session', 'destroy_session', 'clean_session');
  49. session_start();

在普通页面调用代码

  1. colour_blue
  2. <?php
  3. if(empty($_SESSION)) {
  4. $_SESSION['blah'] = 'umlaut';
  5. $_SESSION['this'] = 3615684.45;
  6. $_SESSION['that'] = 'blue';
  7. echo 'Session已存储';
  8. } else {
  9. echo 'SESSION已存在, '.print_r($_SESSION, 1).'';
  10. }
  11. if(isset($_GET['logout'])) {
  12. session_destroy();
  13. echo '会话结束';
  14. } else {
  15. echo '登出';
  16. }
  17. echo '会话数据: '.print_r($_SESSION, 1).'';
  18. ?>

人气教程排行