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 相关文章推荐
PHP+DBM的同学录程序(2)
Oct 09 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
PHP文件操作实现代码分享
Sep 01 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
PHP读取文件内容后清空文件示例代码
Mar 18 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
Jun 04 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
PHP创建对象的六种方式实例总结
Jun 27 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 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
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
js对象的复制继承实例
2015/01/10 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
python 自定义装饰器实例详解
2019/07/20 Python
python编写简单端口扫描器
2019/09/04 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
柯基袜:Corgi Socks
2017/01/26 全球购物
艺人经纪人岗位职责
2014/04/15 职场文书
工地安全生产标语
2014/06/06 职场文书
司机岗位职责说明书
2014/07/29 职场文书
好的旅游活动方案
2014/08/19 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
秋冬农业生产标语
2014/10/09 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书
Elasticsearch 数据类型及管理
2022/04/19 Python
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android