3

cookie如何设置?如何获取?

  • php中向浏览器设置 cookie
setcookie($key ,$val [,$expire ,$path ,$domain ,$secure]);
注意:cookie只可以存字符串类型数据,而且在调用setcookie()前不能有任何输出

$expire int 过时时间
$path string 路径 表示哪些路径下的文件有权限读取该 cookie
$domain string 域名 只可以设置当前域名或者父级域名,不能设置子级或兄弟级域名
$secure bool 安全指数

  • php中获取 cookie 值
使用超全局数组 $_COOKIE
例如:$_COOKIE['username']

cookie 如何删除?

setcookie('key','',time()-1);

如何设置二维cookie? cookie注意事项?什么是共享cookie?

  • 设置二维 cookie
setcookie('user[username]', 'wtao');
setcookie('user[age]', '18');
  • cookie 注意事项
1、不同浏览器,cookie绝对不共享
2、不同域名,cookie绝对不共享 (sso可以解决)
相关内容
  • 所谓共享cookie,其实就是在一个域名的前提下,所有顶级域名和子级域名共享cookie
如果在同一域名下,是非常容易实现单点登录的效果

什么是单点登录(SSO)?

  • 由于 不同域名,cookie绝对不共享 的原因,所以出现 单点登录 技术
  • 单点登录 是指:只要一个账号就可以访问阿里旗下支付宝,淘宝, 天猫等网站.站在企业的角度这样做有一个好处:只要有一个系统负责登录模块,其他的子系统就可以专注于自己系统的业务逻辑,需要的时候请求认证系统就可以.站在用户的角度好处在于只要一个账号就可以访问其公司旗下所有产品.
  • 单点登录 主要解决的是 跨域登录问题,让www.a.com/www.b.com/www.c.com三个域名共享数据

单点登录(SSO)有哪几种实现?

PHP的Session配置

  • session.save_handler = files //session保存处理器
  • session.save_path = "/tmp" //session保存路径
  • session.use_cookies = 1 //启用cookie来存储sessionid
  • session.name = PHPSESSID //存储sessionid的key
  • session.auto_start = 0 //自动启动session,推荐关闭
  • session.cookie_lifetime = 0 //cookie过期时间

手动开启session需要注意哪些问题

如果是基于cookie的,在使用session_start()函数开启session之前,不能有任何输出的内容

一次请求中,多次调用session_start()会有警告,所以一次请求只在开头调用一次session_start()函数

JS的跨域问题是什么?JS跨域问题与Cookie共享问题区别?

  • 什么是跨域?什么是同源策略?什么是同域?
跨域: 由于安全原因浏览器JS进行同源策略限制,所以出现跨域问题。
不同域名、不同端口、不同协议,只要符合其中之一都算跨域请求

同域当请求的URL符合域名、端口、协议都相同的时候,就是 同域 请求

同域策略: 是浏览器内部实现的一种安全机制。当使用JS进行请求时,请求的URL地址浏览器上的URL地址必须 处于同域 才能请求

JavaScript跨域总结与解决办法

  • 解决JS跨域问题的主流方法
1、JSONP 实现原理:利用带有src属性的<script>、<link>、<iframe>、<img>等可跨域的标签

2、CORS 功能上比JSONP强大,支持所有请求方式(GET/POST/PUT/DELETE),但IE8/9不支持,从IE10才开始支持,而JSONP支持所有浏览器
  • 区别JS跨域与Cookie共享
JS跨域问题 重点解决的是:如何请求成功
Cookie共享问题 重点解决的是: 请求成功后,如何获取到Cookie值
顺序上来讲,应该先JS跨域问题,再到Cookie共享问题这两是不同的2个问题

104828720
1.4k 声望222 粉丝

编程其实很枯燥,所以一定要有追求。


下一篇 »
composer Q&A