Home >Backend Development >PHP Tutorial >PHP session advanced_PHP tutorial
This article mainly explains the advanced usage of session
Advanced session configuration in the php.ini configuration file:
session.save_path: session save address (original path: C:/Users/ADMINI~1/AppData/Local/Temp)
session_name: The name obtained by session
session.use_trans_sid: Enable SID support
session.gc_maxlifetime: Garbage collector, specifies the number of seconds after which data will be considered garbage and cleared
session.gc_probability=1
session.gc_divisor=100
The combination of these two is the probability of starting the gc process management
During initialization (session_start())
Probability=session.gc_probability/session.gc_divisor
session.use_cookie = 1: Whether to use cookies
session.cookie_path = '/': Cookie saving path
session.cookie_domain = '': Generally no need to change
session.cookie_lifetime = 0: long storage time
session.save_handler = files: Use files to save session information, change to user
session.save_handler=memcache: If it is memcache, then save_path=tcp://localhost:11211
1. First, change the value of session.save_handler to user (originally files) in the configuration file, and change the session data saving path to the D drive
2. Create relevant files in the root directory
session.php is a public header file, one.php is a session registration event file, two.php is a test file, and three.php is a logout file
one.php:
<!--?php include "session.php"; $_SESSION["isLogin3"]=1; $_SESSION["username"]="admin"; $_SESSION["uid"]=333; echo session_name().'='.session_id()."<br-->";
two.php:
<!--?php include "session.php"; print_r($_SESSION); echo '<br-->'; echo session_name().'='.session_id()." ";
<!--?php include "session.php"; $_SESSION=array(); if(isset($_COOKIE[session_name()])){ setCookie(session_name(),'',time()-100,'/'); } session_destroy(); echo session_name().'='.session_id()."<br-->";
session.php To use the session_set_save_handler() function, check the manual for the parameters used, and then open the session
session_set_save_handler("open","close","read","write","destroy","gc"); session_start();
open():
//在运行session_start()是调用,读取session到$_SESSION中 function open($save_path, $session_name){ global $sess_save_path; //将保存路径设置为全局变量 $sess_save_path=$save_path; //读取的路径给保存路径 return true; }
close():
//session_wirte_close()和session_destroy() function close(){ return true; }
read():
//session_start(),$_SESSION //自动把session_id传进来 function read($id){ global $sess_save_path; $sess_file=$sess_save_path."/kf_".$id; return (string)@file_get_contents($sess_file); }
//脚本结束时和使用session_write_close()强制提交SESSION数据时 //直接调用$_SESSION[]="aaa"; function write($id, $sess_data){ global $sess_save_path; //定义保存文件及文件名 $sess_file=$sess_save_path."/kf_".$id; if($fp=@fopen($sess_file, "w")){ $return=fwrite($fp, $sess_data); fclose($fp); return $return; }else{ return false; } }
//session_destroy()时 function destroy($id){ global $sess_save_path; $sess_file=$sess_save_path."/kf_".$id; //删除路径对象的文件 return @unlink($sess_file); } //session.gc_probability和session.gc_divisor决定的,在open()和read()读数据时, function gc($maxlifetime){ global $sess_save_path; //所有过期的都要删除 //glob遍历出所有以"/kf"的文件作为每一个文件 foreach(glob($sess_save_path."/kf_*") as $filename){ if(filetime($filename)+$maxlifetime < time()){ @unlink($filename); echo $filename; } } return true; }