SESSION存放在資料庫用法執行個體_php技巧

來源:互聯網
上載者:User

本文執行個體講述了SESSION存放在資料庫用法。分享給大家供大家參考。具體如下:

<?php/*CREATE TABLE `ws_sessions` ( `session_id` varchar(255) binary NOT NULL default '', `session_expires` int(10) unsigned NOT NULL default '0', `session_data` text, PRIMARY KEY (`session_id`)) TYPE=InnoDB;*/class session { // session-lifetime var $lifeTime; // mysql-handle var $dbHandle; function open($savePath, $sessName) { // get session-lifetime $this->lifeTime = get_cfg_var("session.gc_maxlifetime"); // open database-connection $dbHandle = @mysql_connect("localhost","root",""); $dbSel = @mysql_select_db("test",$dbHandle); // return success if(!$dbHandle || !$dbSel)  return false; $this->dbHandle = $dbHandle; return true; } function close() { $this->gc(ini_get('session.gc_maxlifetime')); // close database-connection return @mysql_close($this->dbHandle); } function read($sessID) { // fetch session-data $res = mysql_query("SELECT session_data AS d FROM ws_sessions    WHERE session_id = '$sessID'    AND session_expires > ".time(),$this->dbHandle); // return data or an empty string at failure if($row = mysql_fetch_assoc($res))  return $row['d']; return ""; } function write($sessID,$sessData) { // new session-expire-time $newExp = time() + $this->lifeTime; // is a session with this id in the database? $res = mysql_query("SELECT * FROM ws_sessions    WHERE session_id = '$sessID'",$this->dbHandle); // if yes, if(mysql_num_rows($res)) {  // ...update session-data  mysql_query("UPDATE ws_sessions    SET session_expires = '$newExp',    session_data = '$sessData'    WHERE session_id = '$sessID'",$this->dbHandle);  // if something happened, return true  if(mysql_affected_rows($this->dbHandle))  return true; } // if no session-data was found, else {  // create a new row  mysql_query("INSERT INTO ws_sessions (    session_id,    session_expires,    session_data)    VALUES(    '$sessID',    '$newExp',    '$sessData')",$this->dbHandle);  // if row was created, return true  if(mysql_affected_rows($this->dbHandle))  return true; } // an unknown error occured return false; } function destroy($sessID) { // delete session-data mysql_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'",$this->dbHandle); // if session was deleted, return true, if(mysql_affected_rows($this->dbHandle))  return true; // ...else return false return false; } function gc($sessMaxLifeTime) { // delete old sessions mysql_query("DELETE FROM ws_sessions WHERE session_expires < ".time(),$this->dbHandle); // return affected rows return mysql_affected_rows($this->dbHandle); }}$session = new session();session_set_save_handler(array(&$session,"open"),    array(&$session,"close"),    array(&$session,"read"),    array(&$session,"write"),    array(&$session,"destroy"),    array(&$session,"gc"));session_start();// etc...?>

希望本文所述對大家的php程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.