session通常放在/tmp目錄下,而該檔案夾的許可權是everbody可讀,這個就非常可怕了!學校的論壇曾經就有人通過session來盜取帳號!所以後來就嘗試把session放入資料庫,表的結構和過程如下:
//建立表
//create sesslib.sql
CREATE TABLE sesslib (
data text,
time datetime,
id int(11) DEFAULT '0' NOT NULL auto_increment,
sid varchar(32) NOT NULL,
PRIMARY KEY (id),
UNIQUE sid (sid)
);
//End
//XX.php自訂了session的資料庫路徑,當某個頁面需要使用//session時,可以include這個部分,使用方法為:
<?
include "XX.php";//XX.php
session_start();
//以下就可以正常使用session了
?>
/******************************************************/
XX.php 內容:
/*****************************************************/
<?
$sess_dbh="";
$sess_maxlifetime=get_cfg_var("session.gc_maxlifetime");
function sess_open($save_path, $session_name) {
global $hostname, $dbusername, $dbpassword, $dbname, $sess_dbh;
//$sess_dbh=mysql_pconnect($hostname,$dbusername,$dbpassword) or die("不能串連資料庫!");
$sess_dbh=mysql_pconnect('localhost','test','test') or die("不能串連資料庫!");
// mysql_select_db("$dbname") or die("不能選擇資料庫!");
mysql_select_db('test') or die("不能選擇資料庫!");
return(true);
}
function sess_close() {
//mysql_close();
return(true);
}
function sess_read($sid) {
global $sess_dbh;
$result = mysql_query("select data from sesslib where sid='$sid'", $sess_dbh);