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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
php 模拟POST|GET操作实现代码
Jul 20 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 PHP
PHP中is_dir()函数使用指南
May 08 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
javascript 面向对象编程 function也是类
2009/09/17 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python3实现基于用户的协同过滤
2018/05/31 Python
Python操作MySQL数据库的方法
2018/06/20 Python
详解Python字典的操作
2019/03/04 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
六月份红领巾广播稿
2014/02/03 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
北大自主招生自荐信
2015/03/04 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
信用卡工作证明范本
2015/06/19 职场文书