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