全局访问变量



用户登录后,我希望能够保存用户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();的第一件事很容易。

相关内容

  • 没有找到相关文章

最新更新