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 数组教程 定义数组
Oct 23 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
Jan 06 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
网页的分页下标生成代码(PHP后端方法)
Feb 03 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
Yii框架页面渲染操作实例详解
Jul 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
php生成酷炫的四个字符验证码
2016/04/22 PHP
php实现微信企业转账功能
2018/10/02 PHP
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
vue登录以及权限验证相关的实现
2019/10/25 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
python开发之list操作实例分析
2016/02/22 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
Python如何实现远程方法调用
2020/08/07 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
文秘专业大学生求职信
2013/11/10 职场文书
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
创新型城市实施方案
2014/03/06 职场文书
产品质量保证书
2014/04/29 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
英语教师个人工作总结
2015/02/09 职场文书
团员个人年度总结
2015/02/26 职场文书
社区党支部承诺书
2015/04/29 职场文书
离婚财产分割协议书
2015/08/11 职场文书
Java中的继承、多态以及封装
2022/04/11 Java/Android