session 入庫

session_set_save_handler函數用法

session_set_save_handler   (PHP4   > =   4.0b4)

void   session_set_save_handler   (string   open,   string   close,   string   read,   string   write,   string   destroy,   string   gc)

這個函數可以定義用戶級的session的保存函數(打開、關閉、寫入等)。
比如,我們想把session保存在本地的一個數據庫中時,本函數就很有用了。

!!!注意:使用本函數前,先要配置php.ini文件,session.save_hadler=user   ,否則,session_set_save_handler()不會生效。

此外,根據我的測試,你如果想讓這樣的session跨頁面使用,還要在每一個用到session的腳本文件中加入你自定的函數及 session_set_save_handler,所以,最好的方法是做成一個單獨的文件,在每一個要用到session的腳本中用include來包 含進來。

下面這個例子提供了一個最基本的session保存法,類似於默認的files方法。
如果你想用數據庫來實現,這也是很容易做到的。

Example   1.   session_set_save_handler()   example

<?php

function   open   ($save_path,   $session_name)   {
global   $sess_save_path,   $sess_session_name;

$sess_save_path   =   $save_path;
$sess_session_name   =   $session_name;
return(true);
}

function   close()   {
return(true);
}

function   read   ($id)   {
global   $sess_save_path,   $sess_session_name;

$sess_file   =   “$sess_save_path/sess_$id “;
if   ($fp   =   @fopen($sess_file,   “r “))   {
$sess_data   =   fread($fp,   filesize($sess_file));
return($sess_data);
}   else   {
return( ” “);
}

}

function   write   ($id,   $sess_data)   {
global   $sess_save_path,   $sess_session_name;

$sess_file   =   “$sess_save_path/sess_$id “;
if   ($fp   =   @fopen($sess_file,   “w “))   {
return(fwrite($fp,   $sess_data));
}   else   {
return(false);
}

}

function   destroy   ($id)   {
global   $sess_save_path,   $sess_session_name;

$sess_file   =   “$sess_save_path/sess_$id “;
return(@unlink($sess_file));
}

/*********************************************
*   WARNING   –   You   will   need   to   implement   some   *
*   sort   of   garbage   collection   routine   here.   *
*********************************************/
function   gc   ($maxlifetime)   {
return   true;
}

session_set_save_handler   ( “open “,   “close “,   “read “,   “write “,   “destroy “,   “gc “);

session_start();

// proceed   to   use   sessions   normally
// 現在你就可以象往常一樣地使用session了。

?>

 

小結:

session_set_save_handler(
“open “,   /*   session_start()調用   */
“close “,   /*   程序結束時調用   */
“read “,   /*   session_start()調用   */
“write “,   /*   程序結束時調用   */
“destroy “,   /*   session_destroy()調用   */
“gc ”   /*   操作系統gc進程調用   */
);
通知php使用自定義的session處理函數來操作session,而不使用php預置的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章