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

时间:2016-04-06 03:00:09

标签: php session authentication

我不太明白我应该如何使用SessionManager。我正在尝试使用此类来验证登录,以便不显示用户表单,因为我还不知道如何自己使用Sessions。我以为预先建造的课程会帮助我学习。目前我有这个:

$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手册,了解如何实际编写会话。

1 个答案:

答案 0 :(得分:1)

简单方法:

//在页面上:

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。与您在问题中引用的库一样,使用库函数启动安全会话并验证会话。