php开发面试题---禁用cookie之后,如何使用session

一、总结

一句话总结:

在每个url后面自动加上PHPSESSID的值即可,用户禁止cookie后,服务器仍会将sessionId以cookie的方式发送给浏览器

1、用户禁止cookie后,服务器的sessionId还会发给用户么?

会:服务器仍会将sessionId以cookie的方式发送给浏览器,但是,浏览器不再保存这个cookie(即sessionId)了。

2、如何设置才能在每个url后加上sessionId的值?

设置session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项

这样他会在每个url后面自动加上PHPSESSID的值,然后正常使用session就可以了。

3、session的生命周期中特别注意的?

只要活动就不会过期:session是一个只要活动就不会过期的东西,只要开启cookie,每一次会话,session_id都不会改变

二、禁用cookie后如何使用session还有session_id的使用

参考或转自:禁用cookie后如何使用session还有session_id的使用 - 方方土zekeny - 博客园
https://www.cnblogs.com/zekeny/p/6708152.html

(1)如果用户禁止cookie,服务器仍会将sessionId以cookie的方式发送给浏览器,但是,浏览器不再保存这个cookie(即sessionId)了。

(2)如果想继续使用session,需要采取其他方式来实现sessionId的跟踪。

可以使用url重写来实现sessionId的跟踪。

(3)url重写

a,什么是URL重写

浏览器在访问服务器上的某个地址时,不能够直接写这个组件的地址,而应该使用服务器生成的这个地址。

比如,

<a href="some">someServlet</a> error

<a href-"<%=response.encodeURL("some")%>"></a>

encodeURL方法会在"some"后面添加sessionId。

b,如何进行url重写。

//encodeURL方法用在链接地址、表单提交地址。
                response.encodeURL(String url);
                
                //encodeRedirectURL方法用于重定向地址。
                response.encodeRedirectURL(String url);

三、用户禁止cookie后,如何继续使用session

参考或转自:用户禁止cookie后,如何继续使用session - 龙腾四海365的专栏 - CSDN博客
https://blog.csdn.net/u011637069/article/details/49870497

说一下这2个的基本信息吧,2个统称为会话,session存在于服务器端,cookie存在于用户端。之前有人说过如果禁用了cookie那么session就使用不了了,可以说这是正确的,也可以说这是错误的。因为禁用了cookie,session_id就不能保存,而服务器正是根据session_id来判断用户的session,所以说这是正确的。经过测试,当我们禁用cookie时,刷新页面session_id会改变,说明session_id是用cookie保存的。

解决cookie禁用然后引用session的方法。

1.

session.use_cookies = 0  //设置客户端是否使用cookie来保存session值  该参数的值不影响上述机制的进行。

但是为了验证该机制,这里把该参数设为0,排除cookie携带seesionid的可能

session.use_only_cookies = 0  //是否只使用cookie来保存session值  该参数为1时,上述机制失效。

设置session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项

这样他会在每个url后面自动加上PHPSESSID的值,然后正常使用session就可以了。

2.

在url后面加上session_id的值或者保存session_id的值于数据库或redis中,然后在下一次要调用session前,运行session_id($session_id),还有这条语句要在session_start()前。

目前我了解到的只有这两种方法可以解决。

然后我再聊下session_id吧,它是保存在cookie中,首先session是一个只要活动就不会过期的东西,只要开启cookie,每一次会话,session_id都不会改变,我们可以根据session_id来判断用户是否是正常登陆,防止用户伪造session。然后我们也要防止session被劫持,我们可以对session_id进行再一次的加密,防止暴力破解,还有可以设置HttpOnly。通过设置Cookie的HttpOnly为true,可以防止客户端脚本访问这个Cookie,从而有效的防止XSS攻击。

 

php开发面试题---禁用cookie之后,如何使用session的更多相关文章

  1. 【理论面试篇】收集整理来自网络上的一些常见的 经典前端、H5面试题 Web前端开发面试题

    ##2017.10.30收集 面试技巧 5.1 面试形式 1)        一般而言,小公司做笔试题:大公司面谈项目经验:做地图的一定考算法 2)        面试官喜欢什么样的人 ü  技术好. ...

  2. 前端开发面试题-CSS(转载)

    本文由 本文的原作者markyun 收集总结. 介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种, IE 盒子模型.W3C 盒子模型: (2)盒模型: 内容(conte ...

  3. 前端开发面试题-JavaScript(转载)

    本文由 本文的原作者markyun 收集总结. 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol ...

  4. php开发面试题---日常面试题1

    php开发面试题---日常面试题1 一.总结 一句话总结: 实战确定学习方向,然后去网上找视频资源,非常多,然后看书 1.什么样的数据存在memcache里面? 要去数据库里面查询的那些数据,数据库查 ...

  5. 前端开发面试题收集 JS

    前端开发面试题收集-JS篇 收集经典的前端开发面试题 setTimeout的时间定义为0有什么用? javascript引擎是单线程处理任务的,它把任务放在队列中,不会同步执行,必须在完成一个任务后才 ...

  6. 前端开发面试题总结之——JAVASCRIPT(一)

    ___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...

  7. 前端开发面试题总结之——HTML

    ______________________________________________________________________________________________ 相关知识点 ...

  8. 前端开发面试题总结之——CSS3

    ____________________________________________________________________________________________ 相关知识点 布 ...

  9. 前端开发面试题-HTML(转载)

    本文由 本文的原作者markyun 收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的! ...

随机推荐

  1. JS中设置input的type="radio"默认选中

    html: <input id="Radio1" type="radio" value="男" name="st_Sex&q ...

  2. jQuery将字符串转换为数字

    1:parseInt(string)  parseInt("1234blue"); //returns 1234 parseInt("123"); //retu ...

  3. Netty内存池及命中缓存的分配

    内存池的内存规格: 在前面的源码分析过程中,关于内存规格大小我们应该还有些印象.其实在Netty 内存池中主要设置了四种规格大小的内存:tiny 是指0-512Byte 之间的规格大小,small 是 ...

  4. java序列化的相关介绍

    1.什么是序列化?为什么要用序列化? 序列化就是将对象状态转换为可保持或传输的格式的过程.与序列化相对的就是反序列化,他将流转换成对象.这两个过程结合起来,可以轻松地存储和传输数据. 注意:对象序列化 ...

  5. 阿里巴巴离线数据同步工具/平台datax安装、使用笔记

    废话不多说,直接上笔记,先来看下参考链接GitHub: https://github.com/alibaba/DataX.此链接有较详细的安装使用方法,还有json参数编写的文档说明,建议多看. Fi ...

  6. k8s 组件介绍-kube-schedule

    kubernetes scheduler 基本原理 kubernetes scheduler 作为一个单独的进程部署在 master 节点上,它会 watch kube-apiserver 进程去发现 ...

  7. Codeforces - 1194F - Crossword Expert - 组合数学

    https://codeforc.es/contest/1194/problem/F 下面是错的. 看起来有点概率dp的感觉? 给你T秒钟时间,你要按顺序处理总共n个事件,每个事件处理花费的时间是ti ...

  8. Go语言_更多类型:struct、slice 和映射

    更多类型:struct.slice 和映射 学习如何基于现有类型定义新的类型:本节课涵盖了结构体.数组.切片和映射. Go 作者组编写,Go-zh 小组翻译. https://tour.go-zh.o ...

  9. Error: Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead

    一.extrack-tex-webpack-plugin作用:为了抽离css样式,防止将样式打包在js中引起页面样式加载错乱的现象二.使用 npm install extract-webpack-pl ...

  10. 2018-2-13-win10-UWP-RSS阅读器

    title author date CreateTime categories win10 UWP RSS阅读器 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 1 ...