zoukankan      html  css  js  c++  java
  • php session

    1、什么是session

    session译为“会话”,本义是指有始有终的一系列动作消息,在计算机术语中,session是指一个终端用户与交互系统进行通信的时间间隔,通常是指从注册到注销退出系统所经过的时间。因此session实际上是一个特定的时间概念。

    2、工作原理

    当启动一个session会话时,会生成一个随机且唯一的session_id,也就是session的文件名,此时session_id存储在服务器的内存中,当关闭页面时此id会自动注销,重新登录此页面,会再次生成一个随机且唯一的id。

    3、session的功能

    session在web技术中非常重要。由于网页是一种无状态的连接程序,因此无法得知用户的浏览状态。通过session则可记录用户相关信息,以供用户再次以此身份对web服务器提交要求时做确认。如,在电子商务网站中,通过session记录用户登陆的信息,以及用户所购买的商品,如果没有session,那么用户每进入一个页面都需要登陆一次用户名和密码。

    4、session使用

    创建一个session需要4个步骤

    a、启动会话

    b、注册会话

    c、使用会话

    d、删除会话

    a-1、启动会话的方式有两种,一种是使用session_start()函数,另一种是使用session_register()函数为会话创建一个变量来隐含的启动会话

    session_start()函数在页面开始位置调用,然后会话变量被登录到数据$_session.

    a-2、会话变量被创建后,全部保存在数组session中。通过数组_session创建一个会话变量很容易,只要直接给该数组添加一个元素即可。

    <?php
    session_start();
    $_SESSION["admin"]=null;
    ?>

    上述程序中第一行代码是用户启动session,第二行代码是声明一个名为admin的变量,并赋值为空

    a-3、使用会话时,我们需要判断会话变量是否有一个会话id存在,如果不存在,就需要创建一个,并且使其能够通过全局数组$_session进行访问;如果已经存在,则将这个已经创建的会话变量载入以供用户使用。

    <?php
    if(!empty($_SESSION['session_name')){
        $myvalue=$_SESSION['session_name'];
    }
    ?>

    上述程序,先判断用于存储用户名的Session会话变量是否为空,不为空时,将会话变量赋给一个变量$myvalue。

    a-4、删除会话的方法主要有删除单个会话、删除多个会话和结束当前会话3种,下面分别介绍这三种。

    (1)删除单个会话即删除单个会话变量,同数组的操作一样,直接注销$_SESSION数组的某个元素即可。

    <?php
    unset($_SESSION['user']);
    ?>

    使用unset()函数时,要注意$_SESSION数组中元素不能省略,即不可以一次注销整个数组,这样会禁止整个会话的功能,如unset($_SESSION)函数会将全局变量$_SESSION销毁,而且没有办法将其恢复,用户也不能再注册$_SESSION变量。如果要删除多个或全部会话,可采用下面的两种方法。

    (2)删除多个会话即一次注销所有的会话变量,可以通过将一个空的数组赋值给$_SESSION来实现。

    <?php
    $_SESSION=array();
    ?>

    (3)如果整个会话已经结束,首先应该注销所有的会话变量,然后使用session_destroy()函数清除结束当前的会话,并清空会话中的所有资源,彻底销毁Session。

    <?php
    session_destroy();
    ?>
  • 相关阅读:
    CF1236B Alice and the List of Presents |数学
    luogu P1832 A+B Problem |背包
    CF832D Misha, Grisha and Underground |LCA
    bzoj1709[Usaco2007 Oct]Super Paintball超级弹珠*
    bzoj3314[Usaco2013 Nov]Crowded Cows*
    bzoj4300绝世好题
    bzoj2101[Usaco2010 Dec]Treasure Chest 藏宝箱*
    bzoj3437小P的牧场
    bzoj2016[Usaco2010]Chocolate Eating*
    bzoj2015[Usaco2010 Feb]Chocolate Giving*
  • 原文地址:https://www.cnblogs.com/chenyang-1/p/8459937.html
Copyright © 2011-2022 走看看