PHP基础(谈一谈Session&Cookie)
cookie和sessiond的主要区别
(1)、保存位置稍有区别
cookie数据存放在客户的浏览器上,服务器端不用保存。session数据放在服务器上,本地内存也有一份。
(2)、安全性不同
cookie安全性不如session。因为普通cookie保存在本地硬盘上,黑客可以伪造url等方式发起xss攻击,获取本地硬盘保存状态的cookie,进而窃取用户的敏感信息。
session则不同,只有在用户登录此网站时发起xss攻击才能获取session信息,关闭浏览器之后,session即被销毁,安全性较cookie要好
(3).跨域支持上的不同
Cookie支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。
(4).服务器压力的不同
Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。考虑到减轻服务器性能方面,应当使用COOKIE。
(5). 存取方式的不同
Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。
而Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。
(6). cookie的保存内容大小有限制,单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
(7):session的运行依赖session id ,而session id是存在cookie中的,也就是说如果浏览器禁用了cookie,同时session也会失效,(但是可以通过其他方式实现session ,比如在url中传递session id)
(8):session 可以放在文件,数据库,或者是内存中,默认是存储在文件中,都可以
(9):用户验证一般都会用session
$_COOKIE 浏览器cookie的操作
设置cookie:setcookie(name, value, expire, path, domain);
获取cookie:$_COOKIE["user"];
删除cookie:setcookie("user", "", time()-3600);//设置过期时间
$_SESSION 服务端session的操作
使用session前一定要session_start()启动session
储存session:$_SESSION["name"]="King";//数组操作
销毁session:unset($_SESSION["name"]);//销毁一个
session_destroy()和unset($_SESSION);//销毁所有的session
Cookie概念
在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能.
cookie伪造
你的第三方应用端的cookie被恶意的用户截取到,然后向服务器端发送,并且通过验证,他们就会冒充用户进行登录,这就是cookie伪造
防cookie伪造:
现在更通用的做法是使用session来标识用户,也就是说我们为每个第三方应用端生成一个唯一的id,然后在服务端存储这个id所对应的状态。
这样cookie里面仅仅保存了这个id,而没有任何其他的东西。而且这个id往往还有个特性,它是随机生成,且每次登陆都会产生一个新的。这样就更降低了信息泄漏的风险。
Session的概念
Session 是存放在服务器端的类似于HashTable结构来存放用户数据;
作用:实现网页之间数据传递,是一个存储在服务器端的对象集合。
原理:当用户请求一个Asp.net页面时,系统将自动创建一个Session;退出应用程序或关闭服务器时,该Session撤销。系统在创建Session时将为其分配一个长长的字符串标识,以实现对Session进行管理与跟踪。
客户端禁掉 cookie后session还能用吗
Cookie和session都是用来实现会话机制的,由于http协议是无状态的,所以要想跟踪一个用户在同一个网站之间不同页面的状态,需要有这么一个机制----会话机制。
Cookie:将会话信息的保存到浏览器端。Session:将会话信息保存到服务器端。
session默认情况下是基于cookie的,对于session来说,每生成一个sessionid,都会将其发送到浏览器端,让后将其保存到cookie当中。
一般Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。
但是可以通过其他方式来存储sessionID,eg:redis或文件里。
在存储session的文件中,生成sessionID,通过get传参的方式将sessionID传到要实现session共享的页面,读取sessionID,从而从session中获取数据。
session默认的生存时间
php中session过期时间设置
1、修改php配置文件中的session.gc_maxlifetime
2、<?php
session_start();
// 保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>
3、其实 Session 还提供了一个函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:
<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
session_id 和 服务器的session文件的关系
Session_id 和session同时生成,并且session文件是以session_id所命名
php在储存session以什么形式存在
PHP为session的存储提供了三种方式: 文件/ 内存/ 自定义存储,默认是使用文件存储.在访问量大的网站上采用这种方式就不大合适,因为这样会导致大量的输入输出的冗余.我们可以在php.ini更改配置文件或者php脚本中通过相应的函数来设置session文件的存储类型来改变session文件的存储形式
比你优秀的人不可怕,可怕的是比你优秀的人比你更努力
PHP基础(谈一谈Session&Cookie)的更多相关文章
- 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...
- [转] 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互. 一.cookie和session cookie和session都是用来跟踪浏览器 ...
- Session&Cookie&localStorage浅谈
Session&Cookie&localStorage 领导让我开发一个有两张信息表单需要提交页面的网站,我作为一名开发人员,这个需求太简单了,和领导说直接存session sessi ...
- 第一篇 Flask基础篇之(配置文件,路由系统,模板,请求响应,session&cookie)
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...
- 缓存session,cookie,sessionStorage,localStorage的区别
https://www.cnblogs.com/cencenyue/p/7604651.html(copy) 浅谈session,cookie,sessionStorage,localStorage的 ...
- session & cookie(li)
Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...
- Redis+Django(Session,Cookie)的用户系统
一.Django authentication django authentication提供了一个便利的user api接口,无论在py中 request.user,参见Request and re ...
- 会话控制:SESSION,COOKIE
1.http协议: HTTP—超文本传输协议,在TCP协议(长连接.像一个硬件)基础上; 特点:短连接,无状态协议,没法记录本次连接的状态;适用于静态页面的访问,对于后期某些页面是需要浏览器预知客户信 ...
- Redis+Django(Session,Cookie、Cache)的用户系统
转自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authentication 提供了一 ...
随机推荐
- [视频教程] 包管理器方式安装使用openresty新手上路
OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态Web应用.Web ...
- python使用face_recognition包的环境设置
在使用face_recognition包进行人脸识别时,环境是非常重要的,但是网上办法特别纷杂,今天介绍一种特别简单的办法,希望能帮助到大家,少走些坑. 1.首先应该下载dlib安装包(例如:dlib ...
- MySQL学习笔记3——DCL
DCL(数据控制语言) 1.创建用户 *CREATE USER 用户名@IP地址 IDENTIFIED BY '密码'; >用户只能在指定的IP地址上登录*CREATE USER 用户名@'%' ...
- Unity S老师系列课程学习
AssetBundle(创建打包)入门学习(基于Unity2017) (已看) 分组策略 逻辑实体分组 按照类型分组 按照使用分组 分组策略----总结 把经常更新的资源放在一个单独的包里面,跟不经常 ...
- 【转】python中的闭包
转自:http://www.cnblogs.com/ma6174/archive/2013/04/15/3022548.html python中的闭包 什么是闭包? 简单说,闭包就是根据不同的配置信息 ...
- 物联网架构成长之路(36)-Vue前端入门
1. 前言 物联网平台,需要有一个类似大屏看板的功能. 找了一圈,发现阿里已经有对应的DataV产品,但是那个价格有点贵啊.所以找了这个[http://datav.jiaminghi.com/demo ...
- SpringBoot整合log4j2导入新的依赖出现jar冲突解决
1.问题复现: 之前在SpringBoot中配置整合了log4j2,今天在pom文件中,导入新的依赖(依赖如下)之后, <dependency> <groupId>com.gi ...
- 【shell脚本】不停地telnet一个ip或域名,并输出结果到文件中===telnetscript.sh
编写shell脚本不停地telnet一个域名,并输出结果到文件中 [root@localhost ~]# cat telnetscript.sh #!/bin/bash #检查是否在root用户下执行 ...
- 明解C语言 中级篇 第二章答案
练习2-1 /* 倒计时后显示程序运行时间 */ #include <time.h> #include <stdio.h> /*--- 等待x毫秒 ---*/ int slee ...
- HTML+css基础 css选择器 选择器的权重
css选择器 选择器的权重 在css中,哪个选择器的权重高,就走谁的样式 标签选择器的权重是1 class选择器的权重是10 Id选择器的权重是100 行间样式的权重是1000 带有关键字 !imp ...