当前位置:首页 > PHP教程 > php类库 > 列表

php SESSION类(购物车类)

发布:smiling 来源: PHP粉丝网  添加日期:2014-01-08 15:56:55 浏览: 评论:0 

关于 SESSION 在 php 中的应用是必不要少的,最重要的功能之一,SESSION 在网络应用中,称为“会话”,我们通常理解为存储特定用户会话所需的信息,这样,当用户在网站页面之间跳转时,存储的 SESSION 值不会丢失,而是在整个用户会话中一直存活下去。通俗一点讲,就是当用户A上网时,会创建一个ID(a)值进行保存下来,如果你的ID(A)值没有进行注销,下次上网时,这个网站还会记得你的ID(A)值,这个时候就可以在网上进行调用你的ID(A)值了,比如欢迎您ID(A)值再一次访问。

关于在 PHP 中应用 SESSION 值是很简单的,只要在顶端提前输入 session_start() 开始会话即可,下面就可以进行使用 SESSION 了,这只是小网站的应用方法,实际上,SESSION 自身还有许多属性,比如 SESSION周期,调用SESSION,SESSION数据有效期,SESSION保存,SESSION注销等等,如果有了这些属性,看起来才算是一个比较规范的SESSION应用会话。

下面是一个完整的 Session 类,整合了 Session 最基本的属性值,其中,打开,关闭与清理是符合php编程规范的,这也是一个很好的习惯。小小的说明一下,如果网站不是大量使用 Session 类,基本上就没必要使用 SESSION 类了。

  1.  <?php 
  2. /** 
  3. * 文件描述 Session类 
  4. * ================================================================= 
  5. * 文件名称 session.class.php 
  6. * ----------------------------------------------------------------- 
  7. * 适用环境: PHP5.2.x / mysql 5.0.x 
  8. * ----------------------------------------------------------------- 
  9. * 作 者 04ie。com 
  10. * ----------------------------------------------------------------- 
  11. * 创建时间 2010-2-1 
  12. * ================================================================= 
  13. */ 
  14. class Session 
  15. /** 
  16. * session默认有效时间 
  17. * @access public 
  18. * @var ineger $_expiry 
  19. */ 
  20. public $_expiry = 3600; 
  21. /** 
  22. * 有效域名 
  23. * @access public 
  24. * @var string $_domain 
  25. */ 
  26. public $_domain = '.phpfamily.cn'
  27. //初始化 
  28. public function __construct() 
  29. ini_set('session.use_trans_id', 0); 
  30. ini_set('session.gc_maxlifetime'$this->_expiry); 
  31. ini_set('session.use_cookie', 1); 
  32. ini_set('session.cookie_path''/'); 
  33. ini_set('session.cookie_domain'$this->_domain); 
  34. session_module_name('user'); 
  35. session_set_save_handler( 
  36. array(&$this'open'), 
  37. array(&$this'close'), 
  38. array(&$this'read'), 
  39. array(&$this'write'), 
  40. array(&$this'destroy'), 
  41. array(&$this'gc'
  42. ); 
  43. session_start(); 
  44. /** 
  45. * 打开session 
  46. * @access public 
  47. * @param string $savePath 
  48. * @param string $sName 
  49. * @return true 
  50. */ 
  51. public function open($savePath$sName
  52. $this->_conn = mysql_connect('localhost''root'''); 
  53. mysql_select_db('databases'); 
  54. mysql_query('SET NAMES "utf8"'); 
  55. return true; 
  56. /** 
  57. * 关闭session 
  58. * @access public 
  59. * @return bool 
  60. */ 
  61. public function close() 
  62. return mysql_close($this->_conn); 
  63. /** 
  64. * 读取session 
  65. * @access public 
  66. * @param string $sid sessionID 
  67. * @return mixed 
  68. */ 
  69. public function read($sid
  70. $sql = "SELECT data FROM sessions WHERE sessionid='%s'"
  71. $sql = sprintf($sql$sid); 
  72. $res = mysql_query($sql$this->_conn); 
  73. $row = mysql_fetch_assoc($res); 
  74. return !$row ? null : $row['data']; 
  75. /** 
  76. * 写入session 
  77. * @access public 
  78. * @param string $sid sessionID 
  79. * @param string $data serialize序列化后的session内容 
  80. * @return 
  81. */ 
  82. public function write($sid$data
  83. $expiry = time() + $this->_expiry; 
  84. $sql = "REPLACE INTO sessions (sessionid,expiratio 
  85. n,data) VALUES ('%s''%d''%s')"; 
  86. $sql = sprintf($sql$sid$expiry$data); 
  87. mysql_query($sql$this->_conn); 
  88. return true; 
  89. /** 
  90. * 销毁session 
  91. * @access public 
  92. * @param string $sid sessionID 
  93. * @return 
  94. */ 
  95. public function destroy($sid
  96. $sql = "DELETE FROM sessions WHERE sessionid='%s'"
  97. $sql = sprintf($sql$sid); 
  98. mysql_query($sql$this->_conn); 
  99. return true; 
  100. /** 
  101. * 清理过期session 
  102. * @access public 
  103. * @param integer $time 
  104. * @return 
  105. */ 
  106. public function gc($time = 0) 
  107. $sql = "DELETE FROM sessions WHERE expiration < '%d'"
  108. $sql = sprintf($sql, time()); 
  109. mysql_query($sql$this->_conn); 
  110. mysql_query('OPTIMIZE TABLE sessions'); 
  111. return true; 
  112.   

Tags: php SESSION

分享到: