zoukankan      html  css  js  c++  java
  • 20150116--Cookie+Session-02

    SESSION技术

    session技术是一种基于cookie技术实现的会话技术,cookie是将数据保存在浏览器,而session将数据保存到服务器。

    浏览器上的数据很容易暴露,或者被别人盗取,但是服务器认为相对浏览器,安全性要大幅提高。

    session原理

    clip_image002

    操作session

    操作步骤

    1. 开启session

    session_start:开启session

    clip_image004

    2. 将数据存放到session当中

    a) 先将数据保存到预定义超全局变量$_SESSION中

    clip_image006

    b) 脚本执行结束,系统会自动将$_SESSION中的数据存放到session文件中(因为session_start)

    clip_image008

    系统临时文件夹

    clip_image010

    修改session存储的临时目录

    clip_image012

    效果

    clip_image014

    3. 跨脚本共享数据:凡是需要使用$_SESSION的地方(使用session)必须先开启session

    clip_image016

    开启session共享数据

    clip_image018

    4. session不用了之后,要去清理掉服务器端的session文件

    session_destroy():这个是系统会自动的去清理掉当前会话对应的session文件,前提必须先开启session。

    clip_image020

    session文件处理原理

    session_start

    1. 能够从cookie中读取sessionid,PHPSESSID

    2. 如果读不到cookie,会自动的生成sessionid,并且将sessionid当做cookie保存到浏览器端

    3. 能够初始化$_SESSION变量

    4. 能够从sessionid对应的session文件去读取数据,将数据存放到$_SESSION中

    5. session_start读取文件的时候,如果当前文件不存在,会自动创建

    $_SESSION:保存数据

    在脚本执行结束的时候,如果没有session_destroy(),那么系统会自动将$_SESSION里的数据写到session文件中。

    session_destroy:组织系统将$_SESSION中的数据写入到文件,同时还能删除当前会话对应的sessionid所保存的文件。

    clip_image022

    session生命周期

    session声明周期分为两种

    sessionid的生命周期(cookie),默认的是浏览器关闭就失效,就会导致session文件不能访问

    clip_image024

    session文件本身的生命周期,session_start还会做一件额外的事情,就会尝试着去删除失效的session文件(gc:垃圾回收,概率性事件)

    clip_image026

    注意:大部分的网站说登录过期,是源于session文件过期,在session_start的时候会自动的删除这些过期的数据。

    session配置项

    自动开启session

    clip_image028

    session垃圾回收

    clip_image030

    session分层

    因为session文件过多的情况下,session文件的查找效率会降低。

    clip_image032

    系统不能自动创建文件夹

    clip_image034

    手动创建

    clip_image036

    注意:一共需要创建35个子文件夹

    一般情况下,如果一个网站的session文件比较多,而且读取比较频繁,会将session保存到内存(非关系型数据库),如果内存不是很足,就退而求其次,将session存放到关系型数据库。(session入库)

    $_SESSION操作

    $_SESSION不能存储索引数组

    clip_image038

    shop项目

    用户登录跨脚本共享登录信息

    1. 在用户登录之后,开启session,将用户的信息保存到$_SESSION中。/admin/privilege.php|act=check

    clip_image040

    2. 在需要使用session数据的脚本中,取出session信息,使用即可。/admin/index.php?act=top

    clip_image042

    3. 在对应的模板文件中去使用变量。/admin/templates/top.html

    clip_image044

    4. 将时间戳转换成时间。/admin/templates/top.html

    clip_image046

    登录成功更新用户信息

    1. 在登录成功之后,调用相应的方法去修改用户上次登录信息。/admin/privilege.php|act=check

    clip_image048

    2. 增加对应更新用户信息的方法。/admin/includes/User.class.php

    clip_image050

    3. 传入当前要更新用户的id。/admin/privilege.php?act=check

    clip_image052

    4. 给父类增加更新方法db_update。/includes/DB.class.php

    clip_image054

    验证用户是否登录

    1. 首页不能直接访问,必须要用户已经登录才能访问:如果有session文件,且文件中有user信息说明用户已经登录,否则没有登录。/admin/index.php

    clip_image056

    2. session_start在一个脚本中只能开启一次,去掉index.php中act=top中的session_start

    clip_image058

    退出系统

    退出系统,将session文件给删除。

    1. 给用户提供一个操作入口:点击事件,一个a标签中的url。/admin/templates/top.html

    clip_image060

    2. 处理用户动作请求:接收用户请求。采用$_REQUEST接收get和post提交的数据。/admin/privilege.php

    clip_image062

    3. 增加动作处理代码。/admin/privilege.php?act=logout

    clip_image064

  • 相关阅读:
    模板 无源汇上下界可行流 loj115
    ICPC2018JiaozuoE Resistors in Parallel 高精度 数论
    hdu 2255 奔小康赚大钱 最佳匹配 KM算法
    ICPC2018Beijing 现场赛D Frog and Portal 构造
    codeforce 1175E Minimal Segment Cover ST表 倍增思想
    ICPC2018Jiaozuo 现场赛H Can You Solve the Harder Problem? 后缀数组 树上差分 ST表 口胡题解
    luogu P1966 火柴排队 树状数组 逆序对 离散化
    luogu P1970 花匠 贪心
    luogu P1967 货车运输 最大生成树 倍增LCA
    luogu P1315 观光公交 贪心
  • 原文地址:https://www.cnblogs.com/lifushan/p/5419447.html
Copyright © 2011-2022 走看看