Skip to content
电脑工程师入门

电脑工程师入门

create tomorrow, create happiness

  • 实用软件教程
    • Excel
    • WordPress
    • Powerpoint
    • PowerApps
    • PowerAutomateDesk
  • 计算机语言入门
    • PHP
    • Bootstrap
    • JavaScript
    • Python
    • HTML
    • WordPress
  • 咨询
  • Home
  • PHP
  • 第十四章session管理
  • HOME
  • PHP
  • 第十四章session管理

第十四章session管理

PHP

当你想在服务器端保存少量关于用户的信息时使用session,通常用于识别用户。在这里,我将解释如何使用 PHP 使用session。

14-1 启动session

首先,让我简要介绍一下session。session类似于cookies,但是在cookies的情况下,你要管理的值存储在客户端,而session是在服务器端管理的。并且在客户端只保存标识正在使用哪个session的sessionID。在客户端使用 cookie 来存储此sessionID 是很常见的(因此,如果您使用session,您也会使用 cookie)

如果在客户端仅使用 cookie 来存储值,则可能可以窥探到它们。在session中,value在server端保存为session变量,所以在处理重要数据时尽量使用session。

让我们实际使用它。首先,当客户端第一次访问它时,需要创建一个新的session并启动session。为此使用 session_start 函数。

session_start
bool session_start()
---------------------------------------------------------------------------------
session_start() 创建一个session。或根据要求
基于当前session通过 GET、POST 或 cookie 传递的session ID
恢复当前session

退货:
  始终返回 TRUE。

如果session尚未开始,我们要调用此函数,它将开始一个新session并分配一个sessionID。session ID 以 cookie 名称“PHPSESSID”存储在客户端。

如果有已经启动session的client(session ID保存为cookie的client)访问,即使使用这个函数,session也不会重新启动,而是保存在server端,只是准备了session变量供您使用。

<?php
    session_start();
?>

示例代码

让我们实际尝试一下。首先我们启动一个session,看看session ID在客户端有没有写成cookie。

<?php
    session_start();
?>

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

    if (!isset($_COOKIE["PHPSESSID"])){
        print('这是您的第一次访问。开始session。');
    }else{
        print('已经开始了session<br>');
        print('session的ID是'.$_COOKIE["PHPSESSID"].' 。');
    }

?>

</body>
</html>

如果将上述文件安装在WWW服务器上,通过浏览器查看,将显示如下。

14-2 读取和写入session

启动session后,您可以将值存储在服务器端。为每个客户端写入各种值,但可以使用session ID 作为标识符来识别哪个客户端保存了该值。

存储在服务器端的值称为session变量。由于可以保存多个session变量,所以可以保存各种值。

要将值写入session变量,请使用 PHP 中的预定义变量“$_SESSION”。

$_SESSION[session的变量] = 値

例如,要将值写入session变量“visited”:

$_SESSION["visited"] = 1;

如果在客户端仅使用 cookie 来存储值,则可能可以窥探到它们。在session中,value在server端保存为session变量,所以在处理重要数据时尽量使用session。

示例代码

让我们实际尝试一下。首先启动一个session,并将值存储在session变量中。然后尝试在每次客户端访问同一主页时增加session变量。同时,我们会显示上次访问的日期和时间。

<?php
    session_start();
?>

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

    if (!isset($_SESSION["visited"])){
        print('这是您的第一次访问。开始session。');

        $_SESSION["visited"] = 1;
        $_SESSION["date"] = date('c');
    }else{
        $visited = $_SESSION["visited"];
        $visited++;

        print('访问次数为'.$visited.'次。<br>');

        $_SESSION["visited"] = $visited;

        if (isset($_SESSION["date"])){
            print('最后一次访问日期是'.$_SESSION["date"].'。<br>');
        }

        $_SESSION["date"] = date('c');
    }

?>

</body>
</html>

如果将上述文件安装在WWW服务器上,通过浏览器查看,将显示如下。

14-3 删除session变量和删除session ID

您还可以删除保存的session变量。使用「unset」功能

unset
void unset ( mixed var [, mixed var [, mixed ...]] )
--------------------------------------------------------------------------------
unset() 销毁指定的变量。

参数:
  var 要删除的变量

具体说明如下。

unset($_SESSION("visited"));

此外,要删除所有session变量,请在“$_SESSION”变量中存储一个空数组,如下所示。

$_SESSION = array();

※请不要删除“$_SESSION”变量本身。

其次,如果您想销毁session本身,例如通过处理注销。在这种情况下,删除客户端存储的session ID 后,销毁session。

Cookie 保存在客户端,所以删除它们。(有关删除 cookie 的信息,请参阅 “删除 Cookie ”)。

if (isset($_COOKIE["PHPSESSID"])) {
    setcookie("PHPSESSID", '', time() - 1800, '/');
}

最后,销毁session注册的所有数据。使用“session_destroy”函数。

session_destroy
bool session_destroy(void)
---------------------------------------------------------
session_destroy()
销毁与当前session关联的所有数据。此函数不会破坏与session相关的任何全局变量。此外,
它不会破坏session的cookie。

返回:
  成功返回 TRUE,失败返回 FALSE。

像这样使用它:

session_destroy();

示例代码

让我们实际尝试一下。

/******
sample.php
******/

<?php
    session_start();
?>

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

    if (!isset($_SESSION["visited"])){
        print('这是您的第一次访问。开始session。');

        $_SESSION["visited"] = 1;
        $_SESSION["date"] = date('c');
    }else{
        $visited = $_SESSION["visited"];
        $visited++;

        print('访问次数为'.$_SESSION["visited"].'次。<br>');

        $_SESSION["visited"] = $visited;

        if (isset($_SESSION["date"])){
            print('上次访问日期是'.$_SESSION["date"].'。<br>');
        }

        $_SESSION["date"] = date('c');
    }

?>

<p>
<a href="./sessionlogout.php">LOGOUT</a>
</p>

</body>
</html>
/******
sessionlogout.php
******/
<?php
    session_start();
?>

<html>
<head><title>PHP TEST</title></head>
<body>

<?php
    print('显示session变量列表<br>');
    print_r($_SESSION);
    print('<br>');

    print('显示sessionID<br>');
    print($_COOKIE["PHPSESSID"].'<br>');

    print('<p>Logout</p>');

    $_SESSION = array();

    if (isset($_COOKIE["PHPSESSID"])) {
        setcookie("PHPSESSID", '', time() - 1800, '/');
    }

    session_destroy();
?>

<p>
<a href="./sessionlogoutconfirm.php">确认退出</a>
</p>

</body>
</html>
/******
sessionlogoutconfirm.php
******/
<?php
    session_start();
?>

<html>
<head><title>PHP TEST</title></head>
<body>

<?php
    print('确认session变量。<br>');
    if (!isset($_SESSION["visited"])){
        print('访问的session变量未注册。<br>');
    }else{
        print($_SESSION["visited"].'<br>');
    }

    print('确认session ID。<br>');
    if (!isset($_COOKIE["PHPSESSID"])){
        print('session未注册。<br>');
    }else{
        print($_COOKIE["PHPSESSID"].'<br>');
    }
?>

</body>
</html>

如果将上述文件安装在WWW服务器上,通过浏览器查看,将显示如下。

标签:PHP

文章导航

❮ Previous Post: 第十三章cookies的使用
Next Post: 第四章字符串的基本介绍 ❯

关联内容

PHP
第一章PHP 安装和初始配置
PHP
第二章PHP程序基础
PHP
第四章数字和算术运算
PHP
第三章文字列的基础
PHP
第五章变量的讲解
PHP
第六章条件分支

实用软件教程

  • Powerpoint
  • Excel
  • PowerAutomateDesk
  • Wordpress
  • Powerapps

编程语言入门

  • JavaScript
  • HTML
  • PHP
  • Python
  • Bootstrap

Copy right by flashyonder.com