×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
酷素材!视频教程打包下手绘教程抠图教程路径专辑photoshop cs3视频教程
查看: 4245|回复: 20

用数据库(mysql)存储session的方法

[复制链接]

该用户从未签到

发表于 2008-3-29 11:15:48 | 显示全部楼层 |阅读模式
Session的数据库:

建立数据库:

CREATE TABLE `db_session` (

  `sesskey` char(32) NOT NULL,

  `expiry` int(11) unsigned NOT NULL,

  `value` text NOT NULL,

  PRIMARY KEY  (`sesskey`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;



数据库表明:db_session

列名:sesskey,expiry,value 其中:sesskey为主键。

Value里面存放着session里面的值。



files:

session_mysql.php

session_test.php

get_session_test.php

get_session_test2.php

session_mysql.php

<?php

       $gb_DBname="db_myBBS";//数据库名称

       $gb_DBuser="root";//数据库用户名称

       $gb_DBpass="23928484";//数据库密码

       $gb_DBHOSTname="localhost";//主机的名称或是IP地址

      

       $SESS_DBH="";

       $SESS_LIFE=get_cfg_var("session.gc_maxlifetime");

      

       function sess_open($save_path,$session_name){

              global $gb_DBHOSTname,$gb_DBname,$gb_DBuser,$gb_DBpass,$SESS_DBH;

              if(!$SESS_DBH=mysql_pconnect($gb_DBHOSTname,$gb_DBuser,$gb_DBpass)){

                     echo "<li>MySql Error:".mysql_error()."<li>";

                     die();

              }

              if(!mysql_select_db($gb_DBname,$SESS_DBH)){

                     echo "<li>MySql Error:".mysql_error()."<li>";

                     die();

              }

              return true;

       }

      

       function sess_close(){

              return true;

       }

      

       function sess_read($key){

              global $SESS_DBH,$SESS_LIFE;

              $qry="select value from db_session where sesskey = '$key' and expiry > ".time();

              $qid=mysql_query($qry,$SESS_DBH);

              if(list($value)=mysql_fetch_row($qid)){

                     return $value;

              }

              return false;

       }

      

       function sess_write($key,$val){

              global $SESS_DBH,$SESS_LIFE;

              $expiry=time()+$SESS_LIFE;

              $value=$val;

              $qry="insert into db_session values('$key',$expiry,'$value')";

              $qid=mysql_query($qry,$SESS_DBH);

              if(!$qid){

                     $qry="update db_session set expiry=$expiry, value='$value' where sesskey='$key' and expiry >".time();

                     $qid=mysql_query($qry,$SESS_DBH);

              }

              return $qid;

       }

      

       function sess_destroy($key){

              global $SESS_DBH;

              $qry="delete from db_session where sesskey = '$key'";

              $qid=mysql_query($qry,$SESS_DBH);

              return $qid;

       }

      

       function sess_gc($maxlifetime){

              global $SESS_DBH;

              $qry="delete from db_session where expiry < ".time();

              $qid=mysql_query($qry,$SESS_DBH);

              return mysql_affected_rows($SESS_DBH);

       }

       session_module_name();

       session_set_save_handler("sess_open","sess_close","sess_read","sess_write","sess_destroy","sess_gc");

?>

session_test.php

<?php

include ("session_mysql.php");

session_start();

$_SESSION['abc']= "A: I will be back!";

$_SESSION['meto']= "B: Me too ";

$_SESSION['name']= "louis ";

echo "<a href=\"get_session_test.php\">click me</a>";

?>

get_session_test.php

<?php

include ("session_mysql.php");



session_start();



echo $_SESSION['abc'];

echo "<br>";

echo $_SESSION['meto'];

echo "<br>";

echo $_SESSION['name'];

$_SESSION['wq']="12e";

echo "<br><a href=\"get_session_test2.php\">click again</a>";

?>

get_session_test2.php

<?php

include ("session_mysql.php");

session_start();

echo $_SESSION['abc'];

echo "<br>";

echo $_SESSION['meto'];

echo "<br>";

echo $_SESSION['name'];

echo "<br>";

echo $_SESSION['wq'];

//session_destroy();

?>





总结:

1、在每个想使用session的页面前面必须把session_mysql.php引用进来,之后再使用“session_start();”开始创建一个session。

2、如果不使用了,就调用“session_destroy()”方法,把当前session删除。

该用户从未签到

发表于 2017-10-7 10:36:21 | 显示全部楼层
楼主是超人
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-10-7 10:30:49 | 显示全部楼层
好帖就是要顶
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-10-7 10:00:33 | 显示全部楼层
真心顶。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-10-7 09:49:22 | 显示全部楼层
难得一见的好帖
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-10-7 10:08:33 | 显示全部楼层
LZ真是人才
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 18:44:31 | 显示全部楼层
很不错。。。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 18:29:01 | 显示全部楼层
说的非常好
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 19:06:01 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 18:30:22 | 显示全部楼层
教程网我挺你
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 18:38:09 | 显示全部楼层
楼主我支持你
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 19:29:17 | 显示全部楼层
很不错。。。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 19:24:56 | 显示全部楼层
好帖就是要顶
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 19:37:05 | 显示全部楼层
难得一见的好帖
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-9-24 19:37:13 | 显示全部楼层
说的非常好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [免费注册]

本版积分规则