怎么将会话存放在数据库中

  介绍

怎么将会话存放在数据库中?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

具体如下:

& lt; php ?/*   CREATE  TABLE “ws_sessions”, (   ,‘session_id varchar (255), binary  NOT  NULL  default  & # 39; & # 39;   ,' session_expires ' int (10), unsigned  NOT  NULL  default  & # 39; 0 & # 39;   ,“session_data”文本,   ,PRIMARY  KEY  (session_id)   ),类型=InnoDB;   */class  session  {   ,//会话生存期   美元,var 寿命;   ,//mysql-handle   ,var  dbHandle美元;   ,function 开放(savePath美元,美元sessName), {   ,//get 会话生存期   ,$ this→lifeTime =, get_cfg_var (“session.gc_maxlifetime");   ,//open 数据库连接   ,dbHandle 美元;=,@mysql_connect (“localhost",“root",““);   ,dbSel 美元;=,@mysql_select_db (“test", dbHandle美元);   ,//return 成功   ,如果(! $ dbHandle  | |, ! dbSel美元)   return 才能;假;   ,$ this→dbHandle =, dbHandle美元;   ,return 真实;   ,}   ,function  close (), {   ,$ this→gc (ini_get (& # 39; session.gc_maxlifetime& # 39;));   ,//close 数据库连接   ,return  @mysql_close ($ this→dbHandle);   ,}   ,function 阅读(sessID美元),{   ,//fetch 会话数据   ,res 美元;=,mysql_query (“SELECT  session_data  AS  d 得到ws_sessions   ,,,WHERE  session_id =, & # 39;美元sessID& # 39;   ,,,以及session_expires 祝辞,“.time (), $ this→dbHandle);   ,//return  data 或是an  empty  string  at 失败   ,如果(row 美元;=,作用是(res)美元)   return 才能;$ row [& # 39; d # 39;];   ,return ““;   ,}   ,function 写(sessID, sessData美元),{   ,//new  session-expire-time   ,newExp 美元;=,时间(),+,$ this→一生;   ,//is  a  session  with 却;能够id 从而拷贝数据库?   ,res 美元;=,mysql_query (“SELECT  *,得到ws_sessions   ,,,WHERE  session_id =, & # 39; $ sessID& # 39;“这→美元dbHandle);   ,//if 是的,   ,如果(mysql_num_rows (res)美元),{//,才能…update 会话数据   mysql_query(才能“UPDATE  ws_sessions   ,,,SET  session_expires =, & # 39; $ newExp& # 39;   ,,,session_data =, & # 39;美元sessData& # 39;   ,,,WHERE  session_id =, & # 39; $ sessID& # 39;“这→美元dbHandle);//才能,if  something 发生,return 真正的   如果才能(mysql_affected_rows ($ this→dbHandle))   return 才能;真实;   ,}   ,//if  no  session-data  was 发现,   ,else  {//才能,create  a  new 行   mysql_query(才能“INSERT  INTO  ws_sessions  (   ,,,session_id,   ,,,session_expires,   ,,,session_data)   ,,,的值(   ,,,& # 39;$ sessID& # 39;   ,,,& # 39;$ newExp& # 39;   ,,,& # 39;sessData& # 39;美元)“这→美元dbHandle);//才能,if  row  was 创建、return 真正的   如果才能(mysql_affected_rows ($ this→dbHandle))   return 才能;真实;   ,}   ,//an  unknown  error 发生   ,return 假;   ,}   ,function 破坏(sessID美元),{   ,//delete 会话数据   ,mysql_query(得到ws_sessions 获“DELETE  WHERE  session_id =, & # 39;美元sessID& # 39;“,这→美元dbHandle);   ,//if  session  was 删除,return 的确,   ,如果(mysql_affected_rows ($ this→dbHandle))   return 才能;真实;   ,//璭lse  return 错误的   ,return 假;   ,}   ,function  gc (sessMaxLifeTime美元),{   ,//delete  old 会话   ,mysql_query(得到ws_sessions 获“DELETE  WHERE  session_expires  & lt;,“.time (), $ this→dbHandle);   ,//return  affected 行   ,return  mysql_affected_rows ($ this→dbHandle);   ,}   }   $ session =, new 会话();   session_set_save_handler(阵列(及会话,美元“open"),   ,,,阵列(及会话,美元“close"),   ,,,阵列(及会话,美元“read"),   ,,,阵列(及会话,美元“write"),   ,,,阵列(及会话,美元“destroy"),   ,,,阵列(及会话,美元“gc"));   session_start ();//,等等……   null

怎么将会话存放在数据库中