全局访问变量

时间:2012-10-21 20:19:16

标签: php global-variables

用户登录后,我希望能够保存userId以便以后在应用程序中使用。我检索用户名的唯一位置是登录表单,登录控制器。但是,我的应用程序中的结构是从登录控制器传递给我的主控制器的唯一内容是HTML。

当然,我可以将userId包含在HTML中的隐藏字段中,该字段将传递回主控制器,但这看起来太糟糕了。

那么,有没有一种方法可以保存一个值(在本例中是用户名),以便可以从其他类/命名空间/函数中访问它?我已经阅读了一些关于'全球'的内容,但是还没有设法让它在我的应用程序中运行。

来自LoginController.php的

if ($loginView->TriedToLogin()){
    $loginUsername = $loginView->GetUserName();   //Retrieved from form
    $loginPassword = $loginView->GetPassword();
}

3 个答案:

答案 0 :(得分:1)

登录后,您需要将用户令牌存储在会话中。

请参阅: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框架的详细信息,请查看“Create your own framework... on top of the Symfony2 Components”。

答案 1 :(得分:0)

会话怎么样?

  

PHP中的会话支持包含一种保留某些数据的方法   在后续访问中。

http://de2.php.net/manual/en/features.sessions.php

答案 2 :(得分:0)

如果它只是您想要存储的用户名,我会选择$_SESSION[]

它不是(共享)托管环境中最安全的,但使用存储的数据在页面上首先调用session_start();非常容易。