首页 技术 正文
技术 2022年11月15日
0 收藏 977 点赞 4,695 浏览 1796 个字

这两天通过对Cookie和Session的查找和了解,网上关于它们两个的基础知识点都是差不多的,也收藏了几篇不错的博客,同时自己做了些实验后,有了以下几点了解:

1、setcookie 这里有三个地方需注意:

  (1)expire 是指 cookie 的有效期,之前跟 cookie 的属性 maxAge 搞混,以为同样写个正数就可以,其实它的时间是从最原始时间 Thu, 01-Jan-1970 00:00:01 GMT 开始算起的,所以一开始写个很小的数字怎么弄都无法获取到 cookie,其实是有效期不起作用,原始时间加上不大的正数肯定不会超过现在的时间,最好写为:time() + 正数。

  (2)domain 指的是域,表示设置的 cookie 在某个域下可用。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该 cookie。注意第一个字符必须为“.”。不写的话默认是你网站的域名了。

  (3)path 指的是路径,如果设置为“/sessionWeb/”,则只有 contextPath 为“/sessionWeb”的程序可以访问该 cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。不写的话默认是 “/”。

2、设置 cookie 后需刷新或重新打开页面才看得到 cookie,因为第一次是设置,发送给客户端,客户端也无法携带,第二次才会携带。

3、使用 session 时,其实它先通过 session_start() 构造 PHPSESSID 的 session id,并作为 cookie 传给客户端,之后客户端就会携带这个 PHPSESSID 的 cookie,session id 默认在域下,因此同个浏览器访问域的不同页面 session id 会一样。

4、对于同个连接,若没对 session 进行清除或过期或关闭页面,session_start() 只会生成一次 id。

5、可以在 php.ini 文件对 session 的相关属性进行修改,如 session 存储方式、存放路径、过期时间等等。

6、setcookie(session_name(),”,time()-3600,’/’);    //删除本地相关联的

   session_unset();                                     //清空内存中的cookie或者是$_SESSION = array();

session_destroy();                                            //删除服务器端的session文件

7、可以通过 session_id() 自己设置 session id。

8、session 可以存储在内存、文件或数据库,在 I/O、性能、存储大小等各有优缺点,只是对于存储在数据中的话,如果事先无法确定 session 格式的话,数据库存储难以扩展,对于多维的数据比较麻烦,虽然可以保存很好。

9、对于 Laravel,根据网上了解,它的 session 机制没有使用 PHP 的机制,而是自己重新构建一套自己的机制,而且它每个请求都会发送 laravel_session 的 cookie,这样可以避免被劫持,保证安全性。而且同个域下的项目,如果两个项目一样的话,会造成 session 冲突从而无法进一步请求,会被自己设置的过滤或安全机制给拒绝。

10、session_set_save_handler(“sess_open”, “sess_close”, “sess_read”, “sess_write”, “sess_destroy”, “sess_gc”); 设计自己所需要的 session_start() 机制。

11、cookie 和 session 设置前不要有任何输出,因为它们是以请求头的形式发出的,http 规定发送请求头时不能有内容输出,否则会报错。

12、对于不同客户端的连接,session分别建各自的session文件来保存各自的数据,不会使会话冲突,而且在代码中,如下:

  firefox:$_SESSION[‘user’] = ‘firefox’;

  chrome : $_SESSION[‘user’] = ‘chrome’;

  $_SESSION[‘user’]并不会被替换,而是在各自的文件区域里赋值数据;获取时会根据不同的客户端获取到对应的数据。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,497
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,910
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,744
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,498
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,136
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,300