session 注意事项

1. session 与 cookie 的区别与联系是什么?
session 能存各种数据类型。 cookie 只能存字符串。
  $_SESSION 的下标只能是字符串。 $_cookie 的下标也是。
    联系:session 的 id 存在 cookie 中。
 
2. session 的生命周期是?
浏览器关闭。默认的cookie生存周期是浏览器关闭。
 
 
3. 如何持久化 session ?
设置保存 sessionID 的 cookie 生存周期。
 
两种写法:
a:
session_start();
setcookie('PHPSESSID', session_id(), time()+3600);  // 要写在后面
 
注:session_id() 可以获得当前的 sessionID 。
 
b:
session_set_cookie_params(3600, '/', 'baidu.com');  // 要写在前面
session_start();
 
注:
服务器端垃圾回收的时间,应该和 session 持久化时间一致!配置 php.ini:
session.gc_maxlifetime = 3600
 
其实,session 持久化不常用,因为持久化就持久化两方面,一个是浏览器端 cookie ,一个是服务器端的 sessionDATA ,这样 sessionDATA 会很多。
 
 
4. cookie 禁用,session 能否使用?
可用。
session 基于 cookie,cookie 不可用,典型的情况是 session 也不可用。
cookie不能带数据,可以使用 get 参数把数据带到服务器。使用 get 参数来传递 PHPSESSID 。不安全。只要带上 get 参数,就不用登录了。这个参数是自动生成的。而且,是在用户浏览器禁用 cookie 后才会有。没禁用,而我又配置了 php.ini 如下,那么优先使用 cookie 。
 
需要配置 php.ini:
 
session.use_only_cookies = 0   // 允许从url传递PHPSESSID, 不用cookie
session.use_trans_sid = 1      // 使用url传递sessionID
 
注: 
 
1. php 只会自动的在 html 的 a 标签的 href 链接上增加 PHPSESSID 参数。header("Location: ");上的不行。php 代码内的地址不行。但,可以自己写上去:
 
header("Location: test1.php?PHPSESSID=".session_id());
 
2. 如果是通过表单跳转的话,是通过 post 方式传递信息的。这时,php 会自动生成一个隐藏域。name = "PHPSESSID" , value = "session_id()"

转载于:https://www.cnblogs.com/susancain/p/5186565.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值