php.ini中session的配置

1、设置session存储形式
session.save_handler=files   



//默认以文件形式存储



//可选files、memcach、user。如果想要自定义处理器来存取session数据,比如database、redis,就用”user”



2、设置session存储的路径:



session.save_path=”D:\xampp\tmp”



//用文件做介质时,session存储路径; 用memcache做介质时用作服务器连接串:session.save_path = “tcp://127.0.0.1:11211”
//有一种设置是 “N;/path”,这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本



3、session.use_strict_mode=0



4、session.use_cookies=1
//是否使用cookies在客户端保存会话sessionid,默认为1表示使用



5、;session.cookie_secure =



6、session.use_only_cookies=1



7、session.name=PHPSESSID
//在cookie中存储的SessionID的键名



8、是否自动初始化会话



session.auto_start=0
//默认为0不自动初始化,
//当session.auto_start = on时,自动完成了session_start(),执行 session_start() 将产生新的 session_id



9、session.cookie_lifetime=0
//SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭session_id就作废



10、session.cookie_path=/
//cookie的有效路径



11、session.cookie_domain=
//cookie的有效域名



12、session.cookie_httponly=



13、session.gc_probability=1
session.gc_divisor=1000
//概率是 session.gc_probability/session.gc_divisor 结果 1/1000, 
//不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。



session.gc_maxlifetime=1440
//过期时间 默认24分钟
//设定保存的session文件生存期,超过此参数设定秒数后,保存的数据将被视为’垃圾’并由垃圾回收程序清理。判断标准是最后访问数据的时间(对于FAT文件系统是最后刷新数据的时间)。如果多个脚本共享同一个session.save_path目录但session.gc_maxlifetime不同,将以所有session.gc_maxlifetime指令中的最小值为准。
//如果在session.save_path选项中设定使用子目录来存储session数据文件,垃圾回收程序不会自动启动,必须使用自己编写的shell脚本、cron项或者其他办法来执行垃圾搜集。如:cd /path/to/sessions; find -cmin +24 | xargs rm



session.referer_check=



session.entropy_length=0



;session.entropy_file = /dev/urandom



session.cache_limiter=nocache



session.cache_expire=180



session.use_trans_sid=0



session.hash_function=0



session.hash_bits_per_character=5



url_rewriter.tags=”a=href,area=href,frame=src,input=src,form=fakeentry”



;session.upload_progress.enabled = On



;session.upload_progress.cleanup = On



;session.upload_progress.prefix = “upload_progress_”



;session.upload_progress.name = “PHP_SESSION_UPLOAD_PROGRESS”



;session.upload_progress.freq =  ”1%”



;session.upload_progress.min_freq = “1”



一个是Session数据,该数据默认情况下是存放在服务器的tmp文件下的,是以文件形式存在
另一个是标志着Session数据的Session Id,Session ID,就是那个 Session 文件的文件名,Session ID 是随机生成的,因此能保证唯一性和随机性,确保 Session 的安全。一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 session ID。如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。
两个不同的域名网站,想用同一个Session,就是牵扯到Session跨域问题!
默认情况下,各个服务器会各自分别对同一个客户端产生 SESSIONID,如对于同一个用户浏览器,A 服务器产生的 SESSION ID 是 11111111111,而B 服务器生成的则是222222。另外,PHP 的 SESSION数据都是分别保存在本服务器的文件系统中。想要共享 SESSION 数据,那就必须实现两个目标:
一个是各个服务器对同一个客户端产生的SESSION ID 必须相同,并且可通过同一个 COOKIE 进行传递,也就是说各个服务器必须可以读取同一个名为 PHPSESSID 的COOKIE;另一个是 SESSION 数据的存储方式/位置必须保证各个服务器都能够访问到。这两个目标简单地说就是多服务器(A、B服务器)共享客户端的 SESSION ID,同时还必须共享服务器端的 SESSION 数据。



session 跨子域设置
session.cookie_path = /
session.cookie_domain = .mydomain.com //注意domain.com换成你自己的域名
 session.cookie_lifetime = 1800

https://blog.csdn.net/newlooc/article/details/78171578



https://mlog.club/article/862426



https://www.jb51.net/article/110493.htm



https://wiki.php.net/rfc/session-use-strict-mode



https://www.jianshu.com/p/c4b32eb24894


Category web