会话控制:就是为了我们在访问页面和页面之间的跳转是,能够识别到你的登录状态,已经你的登录时长等

在php的会话控制当中,涉及到两个概念Cookie和Session

Cookie 会话控制

  原理:在登录时候,会将你的用户名密码等信息保存在cookie中(cookie在客户端[浏览器]中存在,不安全),当每次登录首页时,都会先判断cookie中是否有对应的cookie信息保存,如果有,则直接判断登录,不需要重新输入用户名和密码,同样的,在页面跳转是,也通过cookie判断,访问页面的是否是同一个用户

  setcookie()

  setrawcookie()

参数一:$name cookie 的名字
参数二:$value cookie的值
参数三:$expire 设置cookie的过期时间,默认为0 单位是秒
参数四:$path 设置cookie的有效路径,默认是当前目录下有效,也可以指定目录
参数五:$domain 设置的cookie的作用域 默认在本地作用域localhost下
参数六:$secure 设置是否cookie只能通过https传输,默认值为false
参数七:$httponly 是否只能使用http访问cooki,默认为false,如果开启,可以减少xss攻击

在php文件中输入  setcookie('nv','jx',time()+3600,'/');即可插入一条cookie数据,并且在浏览器F12打开控制台后查看得到

那么,每个页面都会在我们的浏览器当中留下cookie信息,网页当中如何去识别这些cookie信息,并精准定位呢

就是在第五个参数 Domain中,设定cookie的作用域,只有在对应作用域下访问,才能显示该作用域网页所留下的所有cookie信息,如果将$path定位到对应的某个文件里面,那么久更加的精准了

那么对于cookie的更新,删除就更简单了,

 共同点:必须保持 保持$name  $path 和$domain 一致

  不同点:

  更新,更改值 $value

  删除:修改过期时间

同时:我们也可以通过header头信息来传输cookie信息

  格式:heaedr("Set-Cookie:name=value[;expires=date][;path=path][;domain=domain][;secure=secure][;httponly=httponly]")

    header('Set-Cookie:obj=hahah;expire='.gmdate('Y M D H:i:s',time()).';path=/;httponly=true');

Session的会话控制

  原理:当客户端访问服务器时,服务器根据需求设置session,将会话信息保存在服务器上,同时将标示session的session_id传递给客户端浏览器,
浏览器将这个session_id保存在内存中(cookie,url地址传递等),浏览器每次请求都会拿着存储在cookie或通过url地址将本地的session的id去匹配服务器上面的那个session_id,就能取得客户端的数据状态。

如果客户端浏览器意外关闭,服务器保存的session数据不是立即释放,此时数据还会存在,但是我们设置在浏览器的的session_id的时间都是会话时间,当浏览器已关闭,就会消失,所以,我们需要通过cookie来讲session设置的session_id保存更久的时间

session所涉及的函数

  session_start();//每个页面使用session时都必须打开,不推荐在配置文件中一直打开,浪费资源

  $_SESSION['键'] = ‘值’;//设置session的内容,可以为用户名,密码,或其他基本信息等

  session_id() //获取我们的设置session是所随机配置给你的id值

  session_name() //获取我们存储是的名字,配置中默认为PHPSESSID,可以到配置文件中修改

  SESSION_destroy()//进行对session的销毁

  .......(还有很多api,请查询php.net(▰˘◡˘▰))

在上图中,我们发现,我们通过session来存储信息时,是会话时间,我们可以通过cookie来再保存一次,并设置时间的长度

setcookie(session_name(),session_id(),time()+3600,'/');//将获取的session_name()的值,和session_id()的值作为cookie的名称和值,重新插入cookie中即可

当然,以上的session会话控制,也是要依赖于cookie来保存

禁用Cookie时

但如果当我们的客户端禁用掉cookie之后,如何处理呢?

既然问出来,当然是可以的

就是通过我们的地址栏url来传输我们的内容

我们知道,我们将信息保存到客户端之后,我们在后台只需要去控制两个值

  1.session_name(); 2.session_id();

只要控制着两个值,就能随时获取到我session中设置的值

首先:通过地址栏写入我们的session_name(); 和session_id();

  echo "<a href='1.php?'".session_name().'='.session_id()."‘>查看信息</a>";

第二步:当1.php获取到我的session_name()和session_id()时,我们就进行赋值和

    session_id($_GET[session_name()]);

    session_start();

    获取$_SESSION

最后一步:销毁我们的session

  主要步骤是:1.清空$_SESSION   //$_SESSION = []  等于一个空数组

        2.清空cookie的数据 //同样的将cookie的过期时间调到当前时间的前面

        3.session_destroy()//销毁session会话

总结:

  无论是cookie还是session都能进行会话控制

    cookie保存在客户端中,安全性不高,当然我们可以通过加密和字符串连接等方式进行加强安全性,

    session 保存在服务器中,但同时也依赖于cookie,虽然可以通过其他方式访问,但推荐使用cookie方式,安全性比较强

PHP-会话控制Cookie和Session的更多相关文章

  1. http协议。会话控制cookie、session

    http协议是无状态的协议.每次访问页面的http协议都是独立的,正是因为http协议是无状态的,所以导致访问一个页面后再去访问另一个页面的时候,一些数据会消失,比如:用户的登录信息就会消失.那么怎么 ...

  2. 会话控制:Cookie和session

    HTTP(超文本传输协议)定义了通过万维网(WWW)传输文本.图形.视频和所有其他数据所有的规则.HTTP是一种无状态的协议,说明每次请求的处理都与之前或之后的请求无关.虽然这种简化实现对于HTTP的 ...

  3. 会话控制cookie和session

    Cookie Cookie简介 HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的Web程序的设计.如:在我们进行网购时, ...

  4. 会话控制——Cookie和Session

    Cookie简介 l  HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的Web程序的设计.如:在我们进行网购时,买了一条 ...

  5. 会话技术: Cookie 和 Session

    会话技术 会话技术:从浏览器开始访问服务器,到关闭浏览器,这期间发生了许多次请求和响应,这个过程就叫做一次会话. Cookie 和 Session 都是处理会话技术的两种具体实现,Cookie将数据保 ...

  6. 会话技术cookie和session详解

    什么是会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话技术解决了什么问题 每个用户与服务器进行交互的过程中,各自会有一 ...

  7. 会话管理---Cookie与Session

    会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 保存会话数据的两种技术:Cookie,Session Cookie是客户端技术, ...

  8. 会话跟踪Cookie与Session

    会话跟踪用来跟踪用户的整个会话,常用的是Session和Cookie.Cookie通过客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 1.Cookie  1.1概念及使 ...

  9. Servlet 会话技术cookie和session

    会话技术 Cookie技术:会话数据保存在浏览器客户端. Session技术:会话数据保存在服务器端. 一.Cooke技术 1. 特点 Cookie技术:会话数据保存在浏览器客户端. 2 .Cooki ...

随机推荐

  1. 20.Linux进程管理-企业案例

    1.管理进程状态 当程序运行为进程后,如果希望停止进程,怎么办呢? 那么此时我们可以使用linux的kill命令对进程发送关闭信号.当然除了kill.还有killall,pkill 1.使用kill ...

  2. JAVA学习笔记-1.Tomcat&Servlet

    ##web相关概念 1.软件架构 1.C/S 2.B/S 2.资源分类 1.静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源, 静态资源可以直接被浏览器解析. * 如:html, css, ...

  3. java代码实现MD5加密及验证方法

    MD5加密 在我们的程序中,不管是什么,都会有安全问题,今天就说的是MD5加密的方法 MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密文B到明文A几乎不可能 也就是说,给你密文,是几乎无法通 ...

  4. (一)初识EasyTouch

    Easy Touch是一个手指触控(可以鼠标)的插件,可以非常方便的实现各种功能,使用插件第一步是添加Easy Touch组件,可以右键添加也可以在一个空的游戏物体上添加Easy Touch脚本(非事 ...

  5. jquery复习

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Oracle大规模数据快速导出文本文件

    哈喽,前几久,和大家分享过如何把文本数据快速导入数据库(点击即可打开),今天再和大家分享一个小技能,将Oracle数据库中的数据按照指定分割符.指定字段导出至文本文件.首先来张图,看看导出的数据是什么 ...

  7. RESTFul API最佳实践

    RESTful API最佳实践 RESTful API 概述 基本概念 REST 英文全称:Representational State Transfer,直译为:表现层状态转移.首次是由Roy Th ...

  8. 为什么磁盘慢会导致Linux负载飙升?

    一.CPU利用率和负载率的区别 这里要区别CPU负载和CPU利用率,它们是不同的两个概念,但它们的信息可以在同一个top命令中进行显示.CPU利用率显示的是程序在运行期间实时占用的CPU百分比,这是对 ...

  9. javaScipt类定义和实现

      最近在几个群上经常看到有人问在一个类里的一个 function 怎么调用 this. 定义后公开的方法.现发一篇类实现的随笔.首先说说类,在一个类里我们会有以下的几个特征:1. 公有方法2. 私有 ...

  10. 【实用工具】这些你不得不知道的chrome插件,让你事半功倍

    平时chrome插件用多了,发现在工作中有很多插件特别好用,让你事半功倍.于是我抽时间整理了一些非常好用的chrome插件分享给大家,其中有些插件是我已经离不开,每天都在用的.希望这篇文章能帮助你找到 ...