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中cookie和session的区别及cookie和session用法小结,包括了详解PHP中cookie和session的区别及cookie和session用法小结的使用技巧和注意事项,需要的朋友参考一下 具体来说 cookie 是保存在“客户端”的,而session是保存在“服务端”的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期
本文向大家介绍CodeIgniter中使用cookie的三种方式详解,包括了CodeIgniter中使用cookie的三种方式详解的使用技巧和注意事项,需要的朋友参考一下 cookie在php程序设计中应用十分广泛,本文所述CodeIgniter中使用cookie主要有以下三种方式,读者可以根据自身项目需求酌情采用。 第一种方式:采用php原生态的方法设置的cookie的值 第二种方式:通过CI框
本文向大家介绍php 删除cookie方法详解,包括了php 删除cookie方法详解的使用技巧和注意事项,需要的朋友参考一下 我们先来看下相关cookie的机制。 要删除cookie需要确保它的失效期是在过去,才能触发浏览器的删除机制。 下面的例子说明了如何删除刚才设置的cookie: 删除一个cookie的方法就是把这个cookie的有效期设置为当前时间以前,这也是几乎所有php程序员都会这么
本文向大家介绍PHP中Closure类的使用方法及详解,包括了PHP中Closure类的使用方法及详解的使用技巧和注意事项,需要的朋友参考一下 Closure,匿名函数,又称为Anonymous functions,是php5.3的时候引入的。匿名函数就是没有定义名字的函数。这点牢牢记住就能理解匿名函数的定义了。 Closure 类(PHP 5 >= 5.3.0)简介 用于代表 匿名函数 的类.
本文向大家介绍Django组件之cookie与session的使用方法,包括了Django组件之cookie与session的使用方法的使用技巧和注意事项,需要的朋友参考一下 一、引子 http协议是无状态的,就是它不会记录请求和响应的任何信息,比如你访问一个服务器的一个网页时,先要你登录一下,然后进入网页,但当你要进入这个服务器的另一个网页时,它照常不会知道刚才你已经登录过了,又要让你登录一下,
框架中session/cookie的使用 session session的作用主要在保存会话信息,在访问者浏览网站的期间,对访问者相关的信息进行记录,当浏览器关闭后,会话结束,session数据也就消失了。 PHP框架中session是一个数组,可以通过$_SESSION['key'] = $value的方式对session赋值。如: $_SESSION['myname'] = 'Helllo';