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 adodb连接带密码access数据库实例,测试成功
May 14 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
PHP详解ASCII码对照表与字符转换
Dec 05 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
深入php内核之php in array
Nov 10 PHP
Zend Framework动作助手Json用法实例分析
Mar 05 PHP
PHP文件上传操作实例详解
Sep 27 PHP
php实现基于openssl的加密解密方法
Sep 30 PHP
php 开发中加密的几种方法总结
Mar 22 PHP
PHP类与对象后期静态绑定操作实例详解
Dec 20 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 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 从数据库提取二进制图片的处理代码
2009/09/09 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php输入数据统一类实例
2015/02/23 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
javascript打印输出json实例
2013/11/11 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
如何提高数据访问速度
2016/12/26 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
Python中的装饰器用法详解
2015/01/14 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
理解python中生成器用法
2017/12/20 Python
python解析含有重复key的json方法
2019/01/22 Python
Python实现直播推流效果
2019/11/26 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
制药工程专业个人求职自荐信
2014/01/25 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
个性与发展自我评价
2015/03/06 职场文书
举起手来观后感
2015/06/09 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android