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日历[测试通过]
Mar 27 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
PHP中文编码小技巧
Dec 25 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
PHP浮点比较大小的方法
Feb 14 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
Jun 20 PHP
PHP命名空间用法实例分析
Sep 04 PHP
浅谈laravel中的关联查询with的问题
Oct 10 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
simplehtmldom Doc api帮助文档
2012/03/26 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
Python中使用SAX解析xml实例
2014/11/21 Python
Python格式化css文件的方法
2015/03/10 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python新手学习使用库
2020/06/11 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
企划主管岗位职责
2013/12/12 职场文书
新学期班主任寄语
2014/01/18 职场文书
幼儿园评语大全
2014/04/17 职场文书
女生抽烟检讨书
2014/10/05 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
检讨书模板
2015/01/29 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
Go各时间字符串使用解析
2021/04/02 Golang