您的位置:首页 > 编程语言 > PHP开发

Php中session_set_save_handler的含义

2007-10-29 14:41 651 查看
今天看手册,无意中看到了session_set_save_handler不解其意,于是上网搜寻得知,可以使用session_set_save_handler函数重载SESSION存储方式存储于MYSQL,样例如下:

<?php

2 $DB_SERVER = "server"; /* database server hostname */

3 $DB_NAME = "dbname"; /* database name */

4 $DB_USER = "root"; /* database user */

5 $DB_PASS = "*************"; /* database password */

6

7 $DB_SELECT_DB = "";

8 $SESS_LIFE = get_cfg_var("session.gc_maxlifetime");

9

10 function sess_open($save_path, $session_name) {

11 global $DB_SERVER, $DB_NAME, $DB_USER, $DB_PASS, $DB_SELECT_DB;

12

13 if (! $DB_SELECT_DB = mysql_pconnect($DB_SERVER, $DB_USER, $DB_PASS)) {

14 echo "SORRY! MYSQL ERROR : Can't connect to $DB_SERVER as $DB_USER";

15 echo "MySQL Error: ", mysql_error();

16 die;

17 }

18

19 if (! mysql_select_db($DB_NAME, $DB_SELECT_DB)) {

20 echo "SORRY! MYSQL ERROR : Unable to select database $DB_NAME";

21 die;

22 }

23

24 return true;

25 }

26

27 function sess_close() {

28 return true;

29 }

30

31 function sess_read($SessionKey){

32 global $DB_SELECT_DB, $SESS_LIFE;

33 $Query = "SELECT SessionArray FROM cdb_global_sessions WHERE SessionKey = '".$SessionKey."' AND SessionExpTime > " . time();

34 $Result = mysql_query($Query, $DB_SELECT_DB);

35

36 if (list($SessionArray) = mysql_fetch_row($Result)) {

37 return $SessionArray;

38 }

39

40 return false;

41 }

42

43 function sess_write($SessionKey, $VArray) {

44 global $DB_SELECT_DB, $SESS_LIFE;

45

46 $SessionExpTime = time() + $SESS_LIFE;

47 $SessionArray = addslashes($VArray);

48

49 $Query = "INSERT INTO cdb_global_sessions (SessionKey,SessionExpTime,SessionArray) VALUES ('".$SessionKey."','".$SessionExpTime."','".$SessionArray."')";

50 $Result = mysql_query($Query, $DB_SELECT_DB);

51

52 if (!$Result){

53 $Query = "UPDATE cdb_global_sessions SET SessionExpTime = '".$SessionExpTime."', SessionArray = '".$SessionArray."' WHERE SessionKey = '".$SessionKey."' AND SessionExpTime > " . time();

54 $Result = mysql_query($Query, $DB_SELECT_DB);

55 }

56 return $Result;

57 }

58

59 function sess_destroy($SessionKey) {

60 global $DB_SELECT_DB;

61

62 $Query = "DELETE FROM cdb_global_sessions WHERE SessionKey = '".$SessionKey."'";

63 $Result = mysql_query($Query, $DB_SELECT_DB);

64

65 return $Result;

66 }

67

68 function sess_gc($maxlifetime) {

69 global $DB_SELECT_DB;

70

71 $Query = "DELETE FROM cdb_global_sessions WHERE SessionExpTime < " . time();

72 $Result = mysql_query($Query, $DB_SELECT_DB);

73

74 return mysql_affected_rows($DB_SELECT_DB);

75 }

76

77 session_set_save_handler(

78 "sess_open",

79 "sess_close",

80 "sess_read",

81 "sess_write",

82 "sess_destroy",

83 "sess_gc");

84session_start();

85 ?>

86
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: