0

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

当然,我可以将 userId 包含在传递回主控制器的 HTML 内的隐藏字段中,但这似乎太 hacky。

那么,有没有一种方法可以保存一个值(在这种情况下是用户名),以便可以从其他类/命名空间/函数访问它?我读过一些关于“全球”的文章,但还没有设法让它在我的应用程序中工作。

来自 LoginController.php:

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

3 回答 3

1

Upon login, you need to store your user token in a session.

See: http://au1.php.net/manual/en/features.sessions.php

Store user when logging in:

$_SESSION['user_id'] = 32; // fetch from your user provider

You can then write a class/function that utilises the session to check their login status and fetch their details when required.

Like so:

function getUserId()
{
    return isset($_SESSION['user_id']) ? $_SESSION['user_id'] : false;
}

function isLoggedIn()
{
    return isset($_SESSION['user_id']) && is_numeric($_SESSION['user_id']);
}

Then use anywhere in your application:

echo isLoggedIn() ? getUserId() : 'Anonymous';

Also, for great information on how to build an MVC framework, check out "Create your own framework... on top of the Symfony2 Components".

于 2012-10-21T20:33:37.297 回答
0

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

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

于 2012-10-21T20:24:15.970 回答
0

会议怎么样?

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

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

于 2012-10-21T20:22:02.077 回答