亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1405 | 回復: 0
打印 上一主題 下一主題

使用數據庫保存session的方法 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-10-24 16:42 |只看該作者 |倒序瀏覽
使用數據庫保存session的方法
php的session默認是以文件方式保存在服務器端,并且在客戶端使用cookie保存變量,這就會出現一個問題,當一個用戶由于某種安全原因關閉了瀏覽器的cookie,程序中的session相關操作將無法執(zhí)行。因此,如果能以數據庫保存session數據,將不受客戶端設置的限制,并且在性能和擴展性等方面有一個飛躍。程序中使用關鍵函數是session_set_save_handler,同時要將php.ini里的session.save_handler = files 改為 user。
使用數據庫保存session的方法
php的session默認是以文件方式保存在服務器端,并且在客戶端使用cookie保存變量,這就會出現一個問題,當一個用戶由于某種安全原因關閉了瀏覽器的cookie,程序中的session相關操作將無法執(zhí)行。因此,如果能以數據庫保存session數據,將不受客戶端設置的限制,并且在性能和擴展性等方面有一個飛躍。程序中使用關鍵函數是session_set_save_handler,同時要將php.ini里的session.save_handler = files 改為 user。
數據表結構:[session_tbl]
CREATE TABLE session_tbl (  
sesskey char(32) not null,  
expiry int(11) unsigned not null,  
value text not null,  
PRIMARY KEY (sesskey)  
);
程序代碼:[session_inc.php]
[color="#0000bb"]$SESS_DBHOST [color="#007700"]= [color="#dd0000"]"yourhost"[color="#007700"]; [color="#ff8000"]/* database server hostname */
[color="#0000bb"]$SESS_DBNAME [color="#007700"]= [color="#dd0000"]"yourdb"[color="#007700"]; [color="#ff8000"]/* database name */
[color="#0000bb"]$SESS_DBUSER [color="#007700"]= [color="#dd0000"]"youruser"[color="#007700"]; [color="#ff8000"]/* database user */
[color="#0000bb"]$SESS_DBPASS [color="#007700"]= [color="#dd0000"]"yourpassword"[color="#007700"]; [color="#ff8000"]/* database password */
[color="#0000bb"]$SESS_DBH [color="#007700"]= [color="#dd0000"]""[color="#007700"];
[color="#0000bb"]$SESS_LIFE [color="#007700"]= [color="#0000bb"]get_cfg_var[color="#007700"]([color="#dd0000"]"session.gc_maxlifetime"[color="#007700"]);
function [color="#0000bb"]sess_open[color="#007700"]([color="#0000bb"]$save_path[color="#007700"], [color="#0000bb"]$session_name[color="#007700"]) {
    global [color="#0000bb"]$SESS_DBHOST[color="#007700"], [color="#0000bb"]$SESS_DBNAME[color="#007700"], [color="#0000bb"]$SESS_DBUSER[color="#007700"], [color="#0000bb"]$SESS_DBPASS[color="#007700"], [color="#0000bb"]$SESS_DBH[color="#007700"];
    if (! [color="#0000bb"]$SESS_DBH [color="#007700"]= [color="#0000bb"]mysql_pconnect[color="#007700"]([color="#0000bb"]$SESS_DBHOST[color="#007700"], [color="#0000bb"]$SESS_DBUSER[color="#007700"], [color="#0000bb"]$SESS_DBPASS[color="#007700"])) {
        echo [color="#dd0000"]"
  • Can't connect to $SESS_DBHOST as $SESS_DBUSER"
  • MySQL Error: "
  • Unable to select database $SESS_DBNAME"[color="#007700"];
            echo [color="#dd0000"]"[color="#007700"]. [color="#0000bb"]mysql_error[color="#007700"]();
            die;
        }
        if (! [color="#0000bb"]mysql_select_db[color="#007700"]([color="#0000bb"]$SESS_DBNAME[color="#007700"], [color="#0000bb"]$SESS_DBH[color="#007700"])) {
            echo [color="#dd0000"]"[color="#007700"];
            die;
        }
        return [color="#0000bb"]true[color="#007700"];
    }
    function [color="#0000bb"]sess_close[color="#007700"]() {
        return [color="#0000bb"]true[color="#007700"];
    }
    function [color="#0000bb"]sess_read[color="#007700"]([color="#0000bb"]$key[color="#007700"]) {
        global [color="#0000bb"]$SESS_DBH[color="#007700"], [color="#0000bb"]$SESS_LIFE[color="#007700"];
        [color="#0000bb"]$qry [color="#007700"]= [color="#dd0000"]"SELECT value FROM session_tbl WHERE sesskey = '$key' AND expiry > " [color="#007700"]. [color="#0000bb"]time[color="#007700"]();
        [color="#0000bb"]$qid [color="#007700"]= [color="#0000bb"]mysql_query[color="#007700"]([color="#0000bb"]$qry[color="#007700"], [color="#0000bb"]$SESS_DBH[color="#007700"]);
        if (list([color="#0000bb"]$value[color="#007700"]) = [color="#0000bb"]mysql_fetch_row[color="#007700"]([color="#0000bb"]$qid[color="#007700"])) {
            return [color="#0000bb"]$value[color="#007700"];
        }
        return [color="#0000bb"]false[color="#007700"];
    }
    function [color="#0000bb"]sess_write[color="#007700"]([color="#0000bb"]$key[color="#007700"], [color="#0000bb"]$val[color="#007700"]) {
        global [color="#0000bb"]$SESS_DBH[color="#007700"], [color="#0000bb"]$SESS_LIFE[color="#007700"];
        [color="#0000bb"]$expiry [color="#007700"]= [color="#0000bb"]time[color="#007700"]() + [color="#0000bb"]$SESS_LIFE[color="#007700"]; [color="#ff8000"]//過期時間
        [color="#0000bb"]$value [color="#007700"]= [color="#0000bb"]addslashes[color="#007700"]([color="#0000bb"]$val[color="#007700"]);
        [color="#0000bb"]$qry [color="#007700"]= [color="#dd0000"]"INSERT INTO session_tbl VALUES ('$key', $expiry, '$value')"[color="#007700"];
        [color="#0000bb"]$qid [color="#007700"]= [color="#0000bb"]mysql_query[color="#007700"]([color="#0000bb"]$qry[color="#007700"], [color="#0000bb"]$SESS_DBH[color="#007700"]);
        if (! [color="#0000bb"]$qid[color="#007700"]) {
            [color="#0000bb"]$qry [color="#007700"]= [color="#dd0000"]"UPDATE session_tbl SET expiry = $expiry, value = '$value' WHERE sesskey = '$key' AND expiry > " [color="#007700"]. [color="#0000bb"]time[color="#007700"]();
            [color="#0000bb"]$qid [color="#007700"]= [color="#0000bb"]mysql_query[color="#007700"]([color="#0000bb"]$qry[color="#007700"], [color="#0000bb"]$SESS_DBH[color="#007700"]);
        }
        return [color="#0000bb"]$qid[color="#007700"];
    }
    function [color="#0000bb"]sess_destroy[color="#007700"]([color="#0000bb"]$key[color="#007700"]) {
        global [color="#0000bb"]$SESS_DBH[color="#007700"];
        [color="#0000bb"]$qry [color="#007700"]= [color="#dd0000"]"DELETE FROM session_tbl WHERE sesskey = '$key'"[color="#007700"];
        [color="#0000bb"]$qid [color="#007700"]= [color="#0000bb"]mysql_query[color="#007700"]([color="#0000bb"]$qry[color="#007700"], [color="#0000bb"]$SESS_DBH[color="#007700"]);
        return [color="#0000bb"]$qid[color="#007700"];
    }
    function [color="#0000bb"]sess_gc[color="#007700"]([color="#0000bb"]$maxlifetime[color="#007700"]) {
        global [color="#0000bb"]$SESS_DBH[color="#007700"];
        [color="#0000bb"]$qry [color="#007700"]= [color="#dd0000"]"DELETE FROM session_tbl WHERE expiry [color="#007700"]();
        [color="#0000bb"]$qid [color="#007700"]= [color="#0000bb"]mysql_query[color="#007700"]([color="#0000bb"]$qry[color="#007700"], [color="#0000bb"]$SESS_DBH[color="#007700"]);
        return [color="#0000bb"]mysql_affected_rows[color="#007700"]([color="#0000bb"]$SESS_DBH[color="#007700"]);
    }
    [color="#0000bb"]session_set_save_handler[color="#007700"](
    [color="#dd0000"]"sess_open"[color="#007700"],
    [color="#dd0000"]"sess_close"[color="#007700"],
    [color="#dd0000"]"sess_read"[color="#007700"],
    [color="#dd0000"]"sess_write"[color="#007700"],
    [color="#dd0000"]"sess_destroy"[color="#007700"],
    [color="#dd0000"]"sess_gc"[color="#007700"]);
    [color="#0000bb"]session_start[color="#007700"]();
    [color="#0000bb"]?>
    完成以上步驟后,在程序中使用require("session_inc.php")來代替session_start()即可,其他的session函數還是象以前一樣的方法調用


    本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/3413/showart_53220.html
  • 您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規(guī)則 發(fā)表回復

      

    北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報專區(qū)
    中國互聯網協(xié)會會員  聯系我們:huangweiwei@itpub.net
    感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP