我不太明白应该如何使用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。对于问题中提到的库,使用库函数启动安全会话并验证会话。