设置会话信息
如果 select 语句真正地检索到了一条记录,表明用户名和密码至少有一条记录同用户在登录表单中键入的内容相匹配。现在需要让网站了解到用户已登录。为此,需要设置会话变量,如清单 21 所示。
清单 21. 设置会话信息
复制内容到剪贴板
代码:
...
function authenticateAction()
{
$params = array(
'host' => 'localhost',
'username' => 'chompuser',
'password' => 'chomppassword',
'dbname' => 'chomp'
);
$DB = Zend_Db::factory('pdoMysql', $params);
$select = $DB->select();
$select->from('users', '*');
$select->where('Username = ?', $_POST['username']);
$select->where('Password = ?', $_POST['password']);
$sql = $select->__toString();
$rowsFound = $DB->fetchAll($select);
if (isset($rowsFound[0]['username']))
{
session_start();
$_SESSION['RSS_SESSION'] = session_id();
$_SESSION['firstname'] = $rowsFound[0]['firstname'];
$_SESSION['username'] = $rowsFound[0]['username'];
echo "Login successful. Please <a
href='/'>continue</a>.";
}
else
{
echo "Login information incorrect. Please <a
href='/user/login'>try again</a>.";
}
}
...在 authenticateAction() 函数中,我们先让 PHP 启动会话,如果可能的话使用现有会话也可。然后可以在 $_SESSION 变量中设置值。此变量数据自动地就成为全局变量,这意味着在应用程序中可以随处获取此变量。并一直持续到用户打开浏览器为止。
我们有了 3 个值。第一个是会话 ID,这是引用会话的惟一方式。第二个是用户的姓,这样我们就可以在主页上礼貌而友好地欢迎用户。第三个是用户的用户名,这样我们可以执行任何与用户相关的功能。