SESSION与COOKIE
2017-03-05 13:57
218 查看
前面学习时,服务器一直在自己的电脑上,而客服端的浏览器也是自己用的浏览器,为了更方便自己理解。所以将会话控制的知识总结一下。
作者:罗正波 2017/3/5 13:55:40
作者:罗正波 2017/3/5 13:55:40
会话控制
定义: 会话控制是一种面向连续的可靠的通信方式,通常根据会话控制记录判断用户的登录行为。用户在浏览网页时。 可能需要访问多个页面来完成一个事务, 那么需要在切换页面的时候,服务器能保存用户的登录状态以及用户的数据等。这就是会话控制的思想。 作用: 由于http协议是无状态的协议,当用户在请求web服务器中的网页时,需要访问多个页面来完成事务。 就需要保存用户的登录状态和用户的一些数据。这样会话控制就是允许服务器跟踪同一个客户端做出连续的请求。 会话控制要解决的问题: HTTP是无状态的协议,所以不能维护两个事物间的状态。但一个用户在请求一个页面以后再请求另一个页面时,需要让服务期知道这是一个用户。 总共有3种数据传递方式。 a、超链接或者header()函数等重定向方式 b、使用Cookie将用户的信息状态,存放在客户端的计算机中。 c、使用Session将用户的信息状态,存放在服务器之中。 跟踪方式: a、使用Cookie将用户信息状态,存放在客服端的计算机中。让其他程序能通过存取客服端计算机的Cookie,来存取目前使用者的资料。 b、使用Session将用户的信息状态,存放在服务器中。让其他程序能透过服务器中的文件或者数据库来春去使用者的资料。
COOKIE
COOKIE的理解 a、cookie是在http协议下,服务器或脚本可以维护客户端信息的一种方式。 b、Cookie是一种由服务器发送给客户端的片段信息,存储在客户端浏览器的内存或者硬盘上。 c、常用于保存用户名,密码,个性化设置等,但是不安全。 d、当用户访问服务器时,就会带着cookie信息来访问服务器可以设置和访问cookie的信息。可以用$_COOKIE查看信息。 e、cookie保存在客户端,通常是IE或Firefox浏览器的cookie临时文件夹中,可以手动删除。 f、注意:如果浏览器上cookie太多,超过了系统所允许范围,浏览器也会自动对它进行删除。 设置COOKIE 函数: setcookie(string name,[string value , [int exprie, [ string path, [ string domain, [ int secure ]]]]]);返回值为布尔型。 总共6个参数常用的有3个,必须的参数只有一个就是name。 例子:setcookie("username", "rose", time()+60*60*24*1);//向客户端发送一个Cookie,将变量username值为rose,保存客户端一天的时间 name:Cookie的识别名称;使用$_COOKIE['cookiename']调用名cookie的Cookie; value:Cookie的值,可以为数值或字符串形态,此值保存在客服端,不可用来存储敏感信息;获取值:$_COOKIE['参数名'] expire:Cookie的生存期限,只是一个Unix时间戳,即从Unix纪元开始的秒数;例:time()+60*60*24 将设定的Cookie保存一天后失效,如果未设定Cookie,则会在会话结束后就立即失效。 path:Cookie在服务器端指定的路径,当设定此值时,服务器中只有指定路径下的网页或程序可以存取此Cookie; 如果该参数设为'/',Cookie就在整个demain内有效。 如果设为'/foo/',该参数就只在domain下的'/foo/'目录及其子目录内有效。默认值为设定的Cookie的当前目录。 但是加上它会兼容更多的浏览器。如果该参数设为www.example.com,就只在www子域名内有效 如果设定此值则代表只有某种情况下, 才能在客服端与浏览器端之间传递。当设定为TRUE时,Cookie仅在安全连接中被设置,默认值为FALSE。 Set setCookie("username",'username');//保存用户名 setCookie('userpassword','md5("123")');/保存用户秘密 Delete a、只指定识别名的第一个参数,即删除客户端中这个指定名称的Cookie资料。 setCookie('username');//生存期限同浏览器的关闭则消失。 b、设置Cookie在当前时间之前过期,因此系统会自动自动删除识别名称为username的cookie setCookie('username',time()-1);
SESSION
Session理解与使用 a、Session和Cookie类似,都是用来存储使用者的相关资料。但最大的不同之处在与Cookie是将数据存放于客户端计算机之中, 而Session则是将数据存放在服务器系统下。当你打开浏览器的时候访问服务器的时候,就会自动分配一个SessionID, 在客服端SessionID会保存在Cookie中,如果用户阻止Cookie的使用,则可以将SessionID保存在用户浏览器地址的URL中, 当用户请求Web服务器时,就会包SessionID发送给服务器,在通过SessionID提取保存在服务器Session变量。 b、Session使用的先声明 如果不想每次都开启session_start()可以修改php.ini中session.auto_start=1。 c、当你第一次访问网站时,session_start()函数就会创建一个唯一的SessionID,并自动通过HTTP的响应头讲这个SessionID保存在客户端Cookie中, 当同一个用户再次访问这个网站的时, 这是session_start()函数就不会在去分配一个SessionID,而是在服务器的硬盘中去寻找和这个SessionID同名的Session文件, 将之前的为这个用户保存的会话信息独处,在当前脚本中应用,达到跟踪的目的。 Session注销变量与销毁 a、session_destroy() 因为$_SESSION数组和自定义的数组在使用上是相同的,所以我们用unset()函数来释放在session中注册的单个变量 unset($_SESSION['username']); unset($_SESSION['password']); 注意不要使用unset($_SESSION)删除整个$_SESSION数组, 这样将不能在通过$_SESSION超全局数组注册变量了,但是如果想把某个用户在Session中注册的所有变量都删除, 可以直接使用将数组变量$_SESSION赋上一个空数组。 $_SESSION = array(); b、PHP默认的Session是基于Cookie的,SessionID被服务器存储在客服端的Cookie中, 在Cookie中,保存SessionID的Cookie标识名称就是Session的名称,这个名称是在php.ini中,通过session.name属性指定的值。 在PHP脚本中调用session_name()函数获取Session名称。删除保存在客户端Cookie中的SessionID。 if($_COOKIE[session_name()])setCookie(session_name(),'' ,time()-1,'/'); c、通过以上的介绍可以总结出,Session的注销过程需要4个步骤。完整的4步代码 1、开启session_start(); 2、删除所有的session变量:$_SESSION = array();//服务器端对应文件的内容也会清空 3、如果基于Cookie的session,使用setCookie()删除包含SessionID的cookie: if(isset($_COOKIE[session_name()]))setCookie(session_name(),'',time()-1,'/'); 4、最后彻底销毁Session(服务器端文件也删除) session_destroy();
相关文章推荐
- Application,Session,Cookie,ViewState,Cache的区别(转)
- cookie/session总结
- 详解cookie与session
- 【转】对session和cookie的一些理解
- cookie、session、storage总结
- 20160410servlet学习笔记session与cookie对比与分析
- java Session和Cookie的区别
- session与cookie的区别
- Web--->>>Cookie与Session
- cookie 和session 的区别详解
- cookie和session的区别
- 为什么会有session 和 cookie ,以及两者的区别
- session和cookie
- 描述Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理
- cookie、session与token
- Cookie 和 Session 规则
- connect中间件session、cookie的使用方法分享
- 关于session和cookie的文章
- 购物车(cookie和session各自的优缺点)
- 艾伟_转载:Cookie是什么?用法是怎样?与SESSION有什么区别?(二)