Php 我必须做什么/设置才能保持浏览器';在多个IP之间的长时间会话?
想象一下以下场景: 1) 用户来到一个站点Php 我必须做什么/设置才能保持浏览器';在多个IP之间的长时间会话?,php,apache,session,Php,Apache,Session,想象一下以下场景: 1) 用户来到一个站点 2) 用户将5种产品添加到网站上的购物车中: session_start() $\u会话['cart']=数组(1,4,7,12,20) 3) 用户关闭笔记本电脑的盖子,并将电脑置于睡眠状态 4) 8小时过去 5) 用户移动到另一个位置、另一个internet连接、另一个IP 6) 用户打开笔记本电脑的盖子,继续浏览 7)产品仍在购物车中 我们如何实现第7步能够/将会实现 session\u cart\u id(rand)设置cookie,其中sess
2) 用户将5种产品添加到网站上的购物车中:
session_start()代码>
$\u会话['cart']=数组(1,4,7,12,20)代码>
3) 用户关闭笔记本电脑的盖子,并将电脑置于睡眠状态
4) 8小时过去
5) 用户移动到另一个位置、另一个internet连接、另一个IP
6) 用户打开笔记本电脑的盖子,继续浏览
7)产品仍在购物车中
我们如何实现第7步能够/将会实现
session\u cart\u id(rand)设置cookie,其中session\u cart\u id独立于session、long living、persistent等(如用于登录的memberme cookie)
存储在某处会话\u购物车\u id->购物车内容
在会话启动时,如果设置了会话购物车id,则从商店加载项目
(1) 如果您运行suhosin
,请禁用ip检查(它在普通PHP中不存在)(2)将会话的垃圾收集器设置为您喜欢的时间(3)注意在共享服务器上其他垃圾收集器可能会干扰,在这种情况下,您更改配置以将会话存储在专用/不同的位置。您是否考虑实现自己的会话机制并将会话变量存储到数据库中?在这种情况下,会话不是要进行的。您应该只在其中存储少量数据,如user\u id
和password\u hash
。会话在内部使用序列化,从而增加要存储的数据量。若您存储了大量数据,则会降低访问速度。此外,会话从一开始就用于单一用途(用户应该能够从一个IP访问内容),如果要存储此类数据,最终会违反SRP
和POLS