登录和预构建的SessionManager类的会话使用情况


Session usage with login and prebuilt SessionManager class

我不太明白应该如何使用SessionManager。我正试图使用这个类来验证登录,这样用户表单就不会显示,因为我还不知道如何单独使用会话。我以为一个预先建立的课程会帮助我学习。目前我有这个:

$user = new User( $pdo );
$user->getByUserName( $_SERVER['username'] );
$user->logon( $_SERVER['password'] );
if ( $user->is_logged_on )
{
    //... Do logged in user stuff
}
else
    header( 'Location: /?error=Login%20Error%2E%20Please%20re%2Denter%20your%login%20information%2E' );

目前,我每次进入页面都必须输入登录信息,这不是用户登录的工作方式哈哈。。。我正在尝试使用SessionManager来维护用户登录,但我真的不明白该怎么做。

我只是从每一页开始一个会话吗?SessionManager类是否与检查会话有关?还是仅仅是为了启动它们?我还在学习如何使用用户身份验证和PHP会话,所以我是新手。

我需要添加一个方法来检查现有会话吗:

if ( !isset( $_SERVER['loginsubmit'] ) )
{
    $user = new User( $pdo );
    $user->getByUserName( $_SERVER['username'] );
    if ( $user->logon( $_SERVER['password'] ) )
        SessionManager::sessionStart('mySessionName');
}
if ( !SessionManager::checkSession() )
{
    //...display login form
}
else
{
    //...display logged in user stuff
}

我非常困惑。。。也许我想得太多了…也许这不是如何使用会话的最佳示例。

编辑:仅供参考,我并不是真的在问如何对方法进行编码,我知道如何创建会话并检查它是否存在,我只是不了解会话是如何用于用户身份验证的,所以我选择尝试从预构建的示例中学习。我可以整天阅读PHP手册,了解如何编写会话代码。

简单方法:

//页面:

session_start();
if(!isset($_SESSION['isLogin']) && $_SESSION['isLogin'] != true){
    // redirect to login page
} else {
    // redirect to login page and
    // set $_SESSION['isLogin'] = true when login verify 
}

PS。对于问题中提到的库,使用库函数启动安全会话并验证会话。