欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP中怎样完成Session的设置、获取和删除?

程序员文章站 2022-03-09 09:37:12
...
在之前的文章中给大家带来了《PHP中怎样完成Cookie的创建、读取和删除?》,其中详细的介绍了应该怎样在PHP中创建、读取和删除cookie,本篇我们来看一看PHP中设置、获取和清除session。希望对大家有帮助!

PHP中怎样完成Session的设置、获取和删除?

在之前的文章中,我们介绍了客户端用来储存用户数据的cookie,本篇我们来看一下在PHP中占有非常重要地位的session,session是一种服务器端的机制,也是用来保存信息的,相比于保存在客户端的cookie,保存在服务器端的session用户是无法禁用的,同一个客户端每次和服务端交互时,不需要每次都传回所有的cookie值,只需要传回一个ID就可以了,这个ID是第一次访问服务器的时候生成的,并且是唯一的。

那接下来就来看一看到底什么是session,应该怎样去设置、获取和删除session吧

什么是session

session中文意思是会话,它用来储存使用者的相关资料的,这与cookie类似,例如用户名、个性化设置等等,与cookie不同的是,cookie是将资料保存在客户端的电脑中,用户可以禁用;而session是将数据保存在服务器系统下。网页是无状态的程序连接,无法记录用户的状态,因此通过session来记录用户的相关信息就显得尤为重要。

当开启一个session是,PHP会随机的创建一个sessionID,每个用户的sessionID是唯一的。这个sessionID在客户端与服务器端都会有保存的位置,保存在客户端会使用cookie的指定目录里;在服务器端回忆文本的形式保存到指定的session目录里。

与cookie相比,session是有很多优势的:

因为session的数据不会在客户端与服务器端来回的反复传递,所以通常情况下session还是更安全的;session能够存储的信息比cookie要多很多;用户可以禁用cookie,但是有方法能够是session正常工作。

了解了什么是session后,接下来看一看应该怎样去开启session。

开启session

不同于cookie,使用cookie可以直接创建,而在使用session之前必须先启动,目的是为了让PHP中的核心程序能够将session相关的内建环境预先加载到内存中。

在PHP中通过session_start()函数可以实现开启session的目的,函数session_start()的语法格式如下:

session_start ([array $options = array()])

其中需要注意的是:

$options是一个可选函数,是一个关联数组,并且这个数组中的键不需要包含session.前缀。

示例如下:

<?php
    session_start([
        'cookie_lifetime' => 60*60*24,  // 设置 cookie 的有效时间为 1 天
    ]);
    echo 'Session ID 为:'.$_COOKIE['PHPSESSID'];
?>

输出结果:

PHP中怎样完成Session的设置、获取和删除?

需要注意的是:调用 session_start() 函数会生成一个唯一的 Session ID,并保存在浏览器的 Cookie 中,默认名称为“PHPSESSID”。同时,在本地目录中生成一个以“sess_”加上 Session ID 组成的 Session 文件,用来存储 Session 中的数据,输出结果:

PHP中怎样完成Session的设置、获取和删除?

通过上述实例,已经了解到了应该怎样去开启session,那接下来看一下应该怎样去设置和获取session

设置和获取session

在上文中,启动了session之后,想要使用session变量,还需要经过设置和获取session中的数据,想要完成这些还需要通过$_SESSION数组来完成。使用$_SESSION之前必须要先试用session_start()函数来开启session才可以。

$_SESSION 为一个关联数组,和普通关联数组键值对的含义相同。设置 Session 的语法格式如下:

$_SESSION[名称] = 值;

示例如下:

<?php
    session_start();
    $str = '好好学习';
    $arr = ['Session','$_SESSION'];
    $_SESSION['study']  = $str;
    $_SESSION['study1']   = '天天向上';
    $_SESSION['title'] = $arr;
    foreach ($_SESSION as $key => $value) {
        if(is_array($value)){
            echo $key.':';
            print_r($value);
        }else{
            echo $key.' = '.$value.'<br>';
        }
    }
?>

输出结果:

PHP中怎样完成Session的设置、获取和删除?

运行后需要注意的是:会将这几个变量或数组保存到 $_SESSION 中,还会被保存到服务器端由“sess_”和 Session ID 所命名的文件中,这个文件的位置可以通过修改 php.ini 配置文件或使用 session.save_path 配置。

上文中已经了解了怎样开启、设置和获取session,接下来看一下应该怎样删除session。

删除单个session

删除单个session元素需要通过unset()函数,该函数可以释放指定的变量,相当于直接注销掉数组中的元素,他的语法格式如下:

unset(mixed $var [, mixed $...])

其中需要注意的是:

$var 为要释放的变量,unset() 函数可以接收多个参数,参数之间使用,分隔。

实例如下:

<?php
    session_start();
    echo '<pre>';
    $str = '好好学习';
    $arr = ['删除 Session','$_SESSION'];
    $_SESSION['study']  = $str;
    $_SESSION['study1']   = '天天向上';
    $_SESSION['title'] = $arr;
    echo '定义一个 Session,如下所示:<br>';
    print_r($_SESSION);
    echo '删除 Session 中名为 title 的元素:<br>';
    unset($_SESSION['title']);
    print_r($_SESSION);
?>

输出结果:

PHP中怎样完成Session的设置、获取和删除?

如此便通过unset()函数完成了删除session单个元素了。

删除session多个元素

如果想要一次性删除多个 Session 元素,即一次注销所有的会话变量,可以通过将一个空的数组赋值给 $_SESSION 来实现

实例如下:

<?php
    session_start();
    echo '<pre>';
    $str = '好好学习';
    $arr = ['删除 Session','$_SESSION'];
    $_SESSION['study']  = $str;
    $_SESSION['study1']   = '天天向上';
    $_SESSION['title'] = $arr;
    echo '定义一个 Session,如下所示:<br>';
    print_r($_SESSION);
    echo '删除 Session 中名为 title 的元素:<br>';
    $_SESSION = array();
    print_r($_SESSION);
?>

通过将一个空的数组赋值给 $_SESSION 输出结果:

PHP中怎样完成Session的设置、获取和删除?

还有一种方法就是通过session_unset() 函数来释放session中的所有元素,实例如下:

<?php
    session_start();
    echo '<pre>';
    $str = '好好学习';
    $arr = ['删除 Session','$_SESSION'];
    $_SESSION['study']  = $str;
    $_SESSION['study1']   = '天天向上';
    $_SESSION['title'] = $arr;
    echo '定义一个 Session,如下所示:<br>';
    print_r($_SESSION);
    echo '删除 Session 中名为 title 的元素:<br>';
    session_unset();
    print_r($_SESSION);
?>

输出结果与上述实例的结果相同,由此我们便通过两种方法可以删除session多个元素了。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上就是PHP中怎样完成Session的设置、获取和删除?的详细内容,更多请关注其它相关文章!

相关标签: PHP session