用户登录后,我希望能够保存用户ID以供以后在应用程序中使用。我检索的应用程序中唯一的位置是通过登录控制器从登录表单中。但是,我的应用程序中的结构是,从登录控制器传递给我的主控制器的唯一一件事是html。
当然,我可以在HTML内部的隐藏字段中包含userID,该字段传递给了主控制器,但这似乎太骇客了。
因此,有没有一种方法可以保存一个值(在这种情况下为用户名),以便可以从其他类/名称空间/函数访问它?我已经阅读了一些有关"全局"的信息,但尚未设法在我的应用程序中使用它。
来自logincontroller.php:
if ($loginView->TriedToLogin()){
$loginUsername = $loginView->GetUserName(); //Retrieved from form
$loginPassword = $loginView->GetPassword();
}
登录时,您需要将用户令牌存储在会话中。
请参阅:http://au1.php.net/manual/en/features.sessions.php
登录时存储用户:
$_SESSION['user_id'] = 32; // fetch from your user provider
您可以编写一个类/功能,该类/功能利用会话检查其登录状态并在需要时获取其详细信息。
喜欢:
function getUserId()
{
return isset($_SESSION['user_id']) ? $_SESSION['user_id'] : false;
}
function isLoggedIn()
{
return isset($_SESSION['user_id']) && is_numeric($_SESSION['user_id']);
}
然后在应用程序中使用任何地方:
echo isLoggedIn() ? getUserId() : 'Anonymous';
此外,有关如何构建MVC框架的大量信息,请查看"创建自己的框架...在Symfony2组件之上"。
会话呢?
PHP中的会话支持包括一种保留某些数据的方法 在随后的访问中。
http://de2.php.net/manual/en/features.sessions.php
如果仅是您想要商店的用户名,我会选择$_SESSION[]
。
它不是(共享)托管环境中最安全的,但是使用存储的数据在页面上调用session_start();
的第一件事很容易。