zoukankan      html  css  js  c++  java
  • php session会话技术详解

    发布时间:2019-04-11 14:57:29 来源:青锋建站 作者:青锋建站

      PHP中的会话支持是在并发访问时由一个方法来保存某些数据,被广泛用于保持会话状态,存储会话变量。以下是青锋建站给大家分享的有关phpsession技术的详解,包括Session的基本概念和原理、session的配置方法、使用session完成登录、phpSession回收机制、销毁session、安全退出的实现。

    Session的基本概念和原理

    session的概念
      php中Session是会话的意思,也代表浏览器和服务器之间的信息交流。Session和cookie一样能够区分浏览器(用户)的数据技术。
    phpSession在cookie的基础上加强了以下几点
    1、可以存储更大的数据量;
    2、可以存储更多的数据类型;
    3、数据存储在服务器端,更安全;
    Session和cookie如何区分用户和保持同步


    Session数据为了区分“不同用户(浏览器)”,其依赖于一个特殊的cookie:
    Cookie名:PHPSESSID
    Cookie值:由系统分配的随机的不重复的字符串
    php中Session与cookie的设置相同部分
    有效周期:默认是浏览器窗口生存周期-即关闭浏览器就结束了。
    有效路径:全站有效
    有效域名:当前域名有效
    是否仅仅https协议下有效false
    是否仅仅http协议下有效false

    PHP中Session的细节配置

    Session在php.ini文件中配置
    Session.cookie_lifetime=0;
    //当前会话周期,可以设置为3600表示一小时有效,以秒为单位。
    以最后一次使用为准,中间停留这个时间单位后停止。        
    Session.cookie_path=/;
    //整站根目录
    Session.cookie_domain=
    没有值,表示当前站点
    Session.cookie_secure=
    没有值,默认表示false
    Session.cookie_httponly
    没有值,默认是false
    Session在PHP脚本中进行配置
    Ini_set(‘Session.cookie_lifetime’,   超时秒数);0表示会话周期
    注意:这里的超时时间,不是再是设置cookie时的写法,(time()+秒数),而是直接写秒数!!!
    Ini_set(‘Session.cookie_path’,’/’);
    Ini_set(‘Session.cookie_domain’,’www.bac.com’);
    Ini_set(‘Session.cookie_secure’,false);
    Ini_set(‘Session.cookie_httponly’,false);
    当前设置项就只在“当前文件”中有效,有一个函数,可以进行一次性综合设置:
    Session_set_cookie_params   (超时秒数,’路径’,’域名’,https,httponly)。
    使用:
    Session_set_cookie_params(3600,”/”,””,false,false);
    注意:这里并没有设置session标志的cookie名和其对应cookie值,因为该cookie的名(PHPSESSID)和其值,是由系统给定的。不过,在PHP.INI中,我们的确可以修改session标志的名字。

    Session回收机制

    什么是session回收
      当一个用户进行一个网站进行一系列的session操作,就会记录相应的session数据。
    通常用户做完了某些事情后,就“直接关闭浏览器”,此时,服务器端,就“无从知道”。这些存储在服务器端的session数据就成为了“垃圾”。我们应该有一个机制,在适合的时候删除这些垃圾。
    PHP中的session垃圾回收机制
    最大回收时间(即超时时间):
    Session.gc_maxlifetime=超时时间;//默认是1440,即24   分钟。
    回收的概率分子:
    Session.gc.probability=1;//
    回收的概率分母:
    Session.gc_divisor=1000;
    上述三个设置项,可以在PHP.INI文件中配置,也可以在脚本文件中使用init_set进行设置。
    回收机制的过程
    在设置的超时秒数后,如果有一个请求,就会按设定的概率将该session数据删除。
    销毁session数据
    1、删除单个session:unset($_SESSION[‘名’]);
    2、删除所有session数据:$_SESSION=array();就是赋值为空数组;
    注意:不可以这样删除:unset($_SESSION);
    销毁session:关闭session机制并删除当前session的数据区及文件
    执行session_destory();
    执行session_destory()的作用:
    • session机制不再起作用(即关闭session,其后启动session 的相反过程);
    • 删除session文件对应的“文件数据”;
    • 注意:只是删除当前执行程序的用户(浏览器)的session,并不影响其他使用session的用户。因此其常用场景就是退出。

    使用session完成PHP项目中的登录退出

    使用session完成登录
      通常登录这种需要身份并用于其他页面的“身份识别”的需求,都会使用“session技术”来实现--而不是cookie。
    需求:在MVC框架中使用session完成登录并验证。
    实现过程:当客户登录验证权限后使用$_SESSION['username']来注册会话变量,并在session写入其他重要的变量信息。为了保持会话状态,需要在PHP的其他脚本文件中来验证session,证明客户端正在登录而且是当前客户。验证方法:if(isset($_SESSION['username'])){}else {die('请登录后使用');}。
    安全退出的实现
    使用session_destory();来销毁当前用户的会话变量。
      以上就是青锋建站给大家分享的phpsession技术的原理与工作机制,回收销毁机制,登录与退出的实现。青锋建站,提供专业的网站建设,SEO,网络营销,PHP开发服务。
  • 相关阅读:
    论文才考文献批量修改上角标
    Java开发工具打包下载
    navcat导入mdf文件教程
    net::ERR_INCOMPLETE_CHUNKED_ENCODING
    springboot利用AbstractRoutingDataSource实现动态切换数据源
    springboot利用ConfigurationProperties注解配置数据源无法读取配置信息
    with opne()
    专职DBA-基于Dcoker环境初始化三台虚拟机
    因为下游MySQL的sql_mode设置与上游TiDB的sql_mode不一样,导致drainer同步状态下线。
    Mysql语句
  • 原文地址:https://www.cnblogs.com/nxmxl/p/15099734.html
Copyright © 2011-2022 走看看