cookie和session的区别

两者都是会话跟踪技术,用来确定用户身份的机制。
cookie在客户端记录信息,session在服务端记录信息。
cookie不安全,大小有限制,最大3k。
session较安全,但访问增多,会占用内存。
cookie、session分属客户端和服务端,但服务端session的实现依赖于cookie,sessionId作为请求header,保存容器是cookie。但并不完全依赖于cookie,当客户端cookie禁用或出现问题时,通过配置php.ini中session.use_trans_sin=1,PHP会自动把sessionId附着在URL中,这样再通过SessionId就能跨页使用session变量了。或者手动URL传值、隐藏表单传递sessionId。

session默认是存放在服务端,序列化格式数据写入文件中。怎么实现session的转存呢?
1.直接修改php.ini,或项目入口ini_set设置
session.save_handler = files;原始存放在文件中
session.save_path = /tmp/php;原始存放路径
修改为
session.save_handler = redis;转存redis
session.save_path = tcp://127.0.0.1:6379?auth=redispassword
2.代码中实现转存
自定义session_open,session_close,session_read,session_read,session_write,session_destroy,session_gc(根据失效时间删除过期session)函数。通过session_set_save_handler("open", "close", "read", "write", "destroy", "gc")即设置自定义转存,session_start()使生效。

原文地址:https://www.cnblogs.com/caohongchang/p/11575542.html