dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 978|回复: 0

[功能实现] PHP的会话处理函数session

[复制链接]
  • TA的每日心情

    2024-11-19 20:46
  • 签到天数: 244 天

    [LV.8]以坛为家I

    4434

    主题

    1459

    帖子

    1万

    积分

    会|员

    Rank: 9Rank: 9Rank: 9

    积分
    10734
    发表于 2019-12-14 00:38:13 | 显示全部楼层 |阅读模式

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    (๑•ᴗ•๑)PHP Session 变量当运行一个应用程序时,你会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。
    通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果需要永久储存信息,可以把数据存储在数据库中。
    Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。
    1. 开始会话
    在把信息储存到session之前,首先要开启会话。php提供了session_start()函数来开始或者继续一个会话。定义:
    1 bool session_start( void )
    调用如下:
    [PHP] 纯文本查看 复制代码
    <?php session_start();?>
    <html>
    <body></body>
    </html>


    注意:
    (1)session_start()函数必须位于<html>标签之前,也就是该函数必须在任何输出前调用,常常在写程序时不注意就多输入了一个空格或者回车,这时就会报错。应特别注意这一点。(我可是被坑过)
    (2)无论有没有成功创建会话,session_start()函数都会返回TRUE,因此使用任何异常处理都不起作用。
    (3)还可以启用配置指令session.auto_start,从而不必执行这个函数,但是这样的话,每个php页面执行时都会开始或者继续一个会话。
    2.存储或者读取会话
    存储和读取session变量的正确方法是使用php的$_SESSION变量。$_SESSION是php提供的全局参数,专门用来存储和读取session。(注意关联数组的键名和普通变量的命名规则一致)
    存储会话时,可以对其直接赋值。
    1 $_SESSION[‘season’] = '秋天';
    以上设置了一个键名为“season”的会话元素,其值为“秋天”。当读取时,就像调用普通数组元素一样。
    下面的两段代码显示怎么存储并读取一个会话元素。
    这是session1.php文件:
    [PHP] 纯文本查看 复制代码
    <?php
    /**
     * Created by PhpStorm.
     * User: yuxiu
     * Date: 2016/5/26
     * Time: 14:11
     */
    if(isset($_POST['submit'])){
        session_start();                                //开始建立一个会话
        $_SESSION['season'] = $_POST['season'];       //存储会话数据
        header("Location: session2.php");            //应特别注意header()里的格式问题
    
    
    }
    ?>
    <b>存储会话</b>
    <hr/>
    选择需要设置的数据:
    <form name="form1" method="post" action="" id="form1" >
        <select name="season" id="season_select" >
            <option value="春天">春天</option>
            <option value="夏天">夏天</option>
            <option value="秋天">秋天</option>
            <option value="冬天">冬天</option>
        </select>
        <br/>
        <br/>
        <br/>
       <input type="submit" name="submit" value="submit"/>
    </form>


    这是session2.php文件:
    [PHP] 纯文本查看 复制代码
    <?php
    /**
     * Created by PhpStorm.
     * User: yuxiu
     * Date: 2016/5/26
     * Time: 14:13
     */
    session_start();    //建立或者继续一个会话
    $season = $_SESSION['season'];       //读取会话数据
    
    echo "<b>读取会话</b><br/><br/>";
    switch ($season) {
        case '春天';
            echo '现在是绿意盎然的春天!';
            break;
        case '夏天';
            echo '现在是热情四溢的夏天!';
            break;
        case '秋天';
            echo '现在是丰收果实的秋天!';
            break;
        case '冬天';
            echo '现在是白雪皑皑的冬天!';
            break;
        default ;
            echo '对不起,会话中没有数据  或者  不存在该对话 !';
    }
    ?>

    在session1.php中首先使用session_start()创建一个会话,然后对提交的季节数据使用数组赋值的方式存储,最后使用header()函数直接跳转到开始。在session2.php文件中,也同样需要session_start()函数继续一个会话并利用session数组调用会话信息。

    3.销毁会话
    当会话不再被使用的时候,就需要人为的销毁它,虽然php有自动销毁会话的功能,但这样会使程序的效率变低。可以使用unset()函数或者session_destroy()函数。
    [PHP] 纯文本查看 复制代码
    <?php
     unset($_SESSION['season']);
    ?>


      或者:
    [PHP] 纯文本查看 复制代码
    <?php
     session_destroy();     //注意,使用这个函数将重置session数组,即失去所有的已经储存的session数据
    ?>



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2024-12-23 19:51 , Processed in 0.078522 second(s), 33 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表