php及codeigniter使用session-cookie的方法(详解)


Posted in PHP onApril 06, 2017

1、读写cookie

<1>原生

setcookie('name','value',time)

设置失败,没有正常写入浏览器,测试失败,原因未知

<2>CI框架

$this->input->set_cookie("views","test10",1000);
echo $_COOKIE["views"];//此方法获取值时,如果值不存在会报错,当然可以先用isset($_COOKIE["views"])判断一下

<3>通过helper

$this->load->helper('cookie');//这行放在view也是可以的,随便
set_cookie('views','test10',1000);
echo get_cookie('views');//此方法获取值如果获取不到,会返回空,不会报错

2、读写session

<1>原生session

启动:

<?php
session_start();
?>

赋值:

$_SESSION['views'] = "test20";

取值:

echo "Session:". $_SESSION['views'];

存续时间:

会话。当浏览器关闭,cookie里面的phpsession就会清空,下次打开会重新生成一个

虽然服务器还保存着这个session。session的过期时间在php.ini里设置,参见另一篇文章php(codeigniter)安全性注意事项

<2>CI框架session

启动:

$this->load->library('session');//load必须在controller完成,当要使用session必须先load赋值:
$this->session->views = "test11";

取值:

echo "Session:". $_SESSION['views'];

存续时间:

客户端有2个小时的存续时间,当服务器的session被删除,因为客户端的session id还是有效的,所以当再次打开的时候,服务端会再创建一个跟客户端session id相同的session,当然是创建新id还是老id并不重要,因为只是id同名,里面是没有数据的

<3>区别

>两个session名称是不同的,一个叫phpsession,一个叫ci_session

>只能启动一个,不能两个都启动

>取值是相同的

>两个千万不要混用,应该全面放弃原生的方式

>原生phpsession的是随便访问的,ci_session是httponly的,这就意味着原生的session可能会被通过xxs攻击,通过js获取到cookie

<4>例外情况

有一种情况是这样的:

当此时已经存在ci_session,因为这个ci_是持久化的

//session_start();//没有启动原生的session
//$this->load->library('session');//没有启动ci的session
$_SESSION['views'] = "test23";//直接用原生的方式进行赋值
echo "Session:". $_SESSION['views'];//可以正常取值出来"test23"

通过查看cookie,发现没有原生session存在,只能是走的ci session,那么在服务器的session里找到这个文件,发现这个值没有写进去 如果有声明session_start(),他就会走原生的模式,会重新创建一个phpsession,并且值会写进去

如果什么都没声明,也没有赋值,直接取值,那么会报错,因为要使用ci_session必须要load,我们没有load就会报错,所以证明了,在用原生的方式进行赋值的时候,他相当于启动了session,启用了ci_session,但他又没有权限写入,这可以说是一个bug

<5>session如何运作

cookie的运作比较容易理解,就是写入到用户cookie,写什么读出来就是什么。只要是本站的cookie,就可以通过键值读出来。

session的值是存在服务器的,但是怎么知道这个值是哪个用户的?通过在用户cookie里存入那个session的文件名,而保存的值放在服务器同名的文件里面。说的盗取cookie指的就是盗取这个,重要的信息存在服务器上,但是这个被盗了也完蛋。所以,也不能相信cookie里存的这个session-key,应该做一个鉴权。

注意,写入session的同时,写session-key到用户的cookie里这个是自动完成的,这个存续时间应该是在服务器的php.ini里面配置。

以上这篇php及codeigniter使用session-cookie的方法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
main.php
Dec 09 PHP
php adodb介绍
Mar 19 PHP
php 缩略图实现函数代码
Jun 23 PHP
9个PHP开发常用功能函数小结
Jul 15 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
php中使用sftp教程
Mar 30 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 #PHP
详谈php ip2long 出现负数的原因及解决方法
Apr 05 #PHP
php生成0~1随机小数的方法(必看)
Apr 05 #PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 #PHP
php str_getcsv把字符串解析为数组的实现方法
Apr 05 #PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 #PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 #PHP
You might like
德生S2000电路分析
2021/03/02 无线电
php引用传值实例详解学习
2013/11/06 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
javascript计算对象长度的方法
2017/10/25 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
Python Selenium库的基本使用教程
2021/01/04 Python
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
大学生全国两会报告感想
2014/03/17 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
股东授权委托书范文
2014/09/13 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
初中物理教学反思
2016/02/19 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
python turtle绘图命令及案例
2021/11/23 Python