为什么要使用会话控制技术

HTTP协议是无状态的,也就是说HTTP没有一个内建的机制来维护两个事务之间的状态。当一个用户完成一个请求发起第二个请求的时候,服务器无法知道这次请求是来自于上一次的客户。而用户登录、购物车等,这些是需要服务器能够保存用户的状态的。会话技术就是用来完成这件事的。其思想是允许服务器跟踪客户端做出的连续请求。

会话控制技术的实现方式

通过GET参数传递

在get里面把状态传递到下一页

使用get参数传递不安全而且不稳定,不建议使用

Cookie

Cookie本质上是服务器发送给客户端的片段信息,存储在客户端浏览器的内存或者是硬盘中的技术。

  • Cookie的写入操作

    setcookie($name,$value,$expire,$path,$domain,$secure)
  • 读取Cookie

    $_COOKIE数组
  • 删除Cookie

    删除cookie不能使用unset,因为$_COOKIE是只读的。要想删除,只需要让其过期就就行:

    setcookie($name,'',time()-1000)
  • Cookie的优缺点
    • 优点:存储在客户端,不会占用服务器的资源
    • 缺点:信息保存在客户端,安全性得不到保障,而且用户可以关闭cookie。

Session

Session将数据保存在服务器上,相比cookie更加安全。

session并不是完全脱离cookie,他是基于cookie的(需要将sessionid保存在客户端,如果cookie被禁用,可以通过url来传递sessionid)

  • session 的操作

    1. session_start();//要使用之前一定要开启
    2. 然后直接操作$_SESSION数组
    3. 要删除,直接赋空数组:$_SESSION = [];
    4. 如果想删除文件,则使用session_destroy();//同时会删除对应session的cookie
  • session 配置(php.ini)

    1. session.auto_start
    2. session.cookie_domain
    3. session.cookie_lifetime
    4. session.cookie_path
    5. session.name
    6. session.save_path
    7. session.use_cookies
    8. session.use_trans_sid
    9. session.gc_probability
    10. session.gc_divisor
    11. session.gc_maxlifetime
    12. session.save_handler
  • session的优缺点

    • 优点:信息安全
    • 缺点:占用服务器的资源,分布式不方便
  • 传递sessionid

    如果cookie被禁用,那么可以通过get来传递sessionid:


"xxx.php?<?php echo session_name().'='.session_id(); ?>"//通过session_name()和session_id()来拼接 "xxx.php?<?php echo SID; ?>"//SID常量在cookie开启的时候为空,在cookie被禁用的时候是session_name()和session_id()拼接的样子
  • session 的存储

session_set_save_handler()函数可以将session存储在服务器上(mysql Memcache redis等)

PHP会话控制考察点的更多相关文章

  1. 会话控制:session与cookie

    我们在浏览网站时,访问的每一个web页面都需要使用"http协议"实现.而HTTP协议是无状态协议,就是说HTTP协议没有一个内建机制来维护两个事务之间的状态.当一个用户请求一个页 ...

  2. php 会话控制

    会话控制 HTTP协议,在TCP协议基础上的HTTP协议称为无状态协议 SESSION COOKIE SESSION特点:1.存储在服务器.2.每个使用者都会生成一个SESSION.3.有默认的过期时 ...

  3. (实用篇)php通过会话控制实现身份验证实例

    会话控制的思想就是指能够在网站中根据一个会话跟踪用户.这里整理了详细的代码,有需要的小伙伴可以参考下. 概述 http 协议是无状态的,对于每个请求,服务端无法区分用户.PHP 会话控制就是给了用户一 ...

  4. 会话控制:SESSION,COOKIE

    1.http协议: HTTP—超文本传输协议,在TCP协议(长连接.像一个硬件)基础上; 特点:短连接,无状态协议,没法记录本次连接的状态;适用于静态页面的访问,对于后期某些页面是需要浏览器预知客户信 ...

  5. PHP之自定义会话控制---使用文件处理

    前三篇简单的总结了下会话控制和文件操作,这一篇说说会话控制的自定义处理方式.既然知道了文件的基本读写,而且在会话控制中,也有人提到,session数据可以保存到缓存或数据库中,实际上当然不会是直接利用 ...

  6. PHP之会话控制小结

    会话控制是一种跟踪用户的通信方式,使用会话控制主要基于以下几点:由于http协议的无状态性,使得不能通过协议来建立两次请求之间的关联:对于通常的页面之间的数据传递方式get和post而言,主要处理参数 ...

  7. php——会话控制

    1.什么叫做会话控制 允许服务器根据客户端做出的连续请求. 2.为什么需要会话控制? 因为当你打开一个网站,并想访问该网站的其他页面的时候,如果没有会话控制,当跳转到其他页面的 时候,就需要再次输入账 ...

  8. PHP会话控制Session与Cookie

    理解会话控制的概念: 阅读过HTTP协议相关资料的同学都会知道HTTP协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议,所谓无状态,指的是不会维护http请求数据,http请求是 ...

  9. (详细)php实现留言板---会话控制-----------2017-05-08

    要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容. 要实现的功能: 1.登录者只能查看自己和所有人的信息,并能够给好友留言 2.留言板页面,好友采取下拉列表,当留言信息为空时,显示提示 ...

随机推荐

  1. 修改系统时间(取得服务器时间,使用SetLocalTime API函数,需要UAC权限)

    我的客户遇到系统时间不对,自己又不会改,于是想到利用服务端时间来修改本地的系统时间. 第一步,把下面xml存成uac.xml文件备用. <?xml version="1.0" ...

  2. SprigMVC基础测试

    创建POJO package org.entity; public class User { private int id; private String userName; private Stri ...

  3. mongodb05---游标

    游标cursor: 通俗的说,游标不是查询结果,而是查询的返回资源,或者接口. 通过这个接口,你可以逐条读取.就像php中的fopen打开文件,得到一个资源一样, 通过资源,可以一行一行的读文件. v ...

  4. action 与 action 之间的跳转

    这个要看你的两个action是不是在通一个package下了 <!-- 相同package下调用其它action --><action name="loginUser&qu ...

  5. lucene segment会包含所有的索引文件,如tim tip等,可以认为是mini的独立索引

    A Lucene index segment can be viewed as a "mini" index or a shard. Each segment is a colle ...

  6. SELinux 初探

    SELinux:Security Enhanced Linux.SELinux 是 NSA(美国国家安全局)开发设计,整合到 Linux 内核中的一个模块. 0. 基本概念 DAC(Discretio ...

  7. P4455 [CQOI2018]社交网络

    这个题仔细一看就是生成树计数,但是我这个记性是真的差,早就忘了.复习了一下高斯消元,然后这个题就是很裸的题了. ps:高斯消元解行列式的时候要取反. 题干: 题目背景 当今社会,在社交网络上看朋友的消 ...

  8. Nginx反向代理服务器、负载均衡和正向代理

    Nginx("engine x")是一个高性能的 HTTP 和反向代理服务器,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日.官方测试 nginx 能够支撑5万 ...

  9. robotframework收藏

    收藏文章 http://www.360doc.com/userhome/38592059

  10. VS2010打包回顾

    1.  在vs2010 选择“新建项目”à“ 其他项目类型”à“ Visual Studio Installerà “安装项目”: 命名为:Setup1 . 这是在VS2010中将有三个文件夹, 1. ...