在php中获取用户主体

时间:2014-12-11 07:43:50

标签: php jsp

我有一些jsp页面,我必须在php页面中进行转换。在我的jsp中,我可以通过此request.getUserPrincipal().getName()获取已登录的用户。如何在我的php页面中执行此操作以获取已登录的用户?

1 个答案:

答案 0 :(得分:0)

您可以拥有一个名为logged_users的表,其结构如下:

  id         |         user_id              |        created
------------------------------------------------------------------------
abc          |            1                 |     11-12-2014 12:31:51
xyz          |            2                 |     11-12-2014 08:21:13

id有一些唯一的id,如UUID或随机生成的字符串。 user_id是要记住的用户的id。创建时是创建记录的时间(因此您可以在X时间之后注销用户)。

现在,如果用户成功登录并希望记住,则添加一个具有唯一ID的新记录,并将user_id添加到logged_users。您还可以使用setcookie()创建一个新Cookie,其中包含您刚刚插入的随机生成的id

现在,当用户下次请求该网站时,您会看到他已存储了记忆cookie。您获取该记录,检查它是否尚未过期,并使用user_id列登录相应的用户。这样,您就不会在cookie中存储敏感信息。

                                       OR

首先,确保在需要了解登录状态的所有页面上启用会话变量,方法是将其放在这些页面的开头:

session_start();

接下来,当用户通过登录表单提交用户名和密码时,通常会通过查询包含用户名和密码信息的数据库(如MySQL)来检查用户名和密码。如果数据库返回匹配项,则可以设置会话变量以包含该事实。您可能还想包含其他信息:

if (match_found_in_database()) {
    $_SESSION['loggedin'] = true;
    $_SESSION['username'] = $username; // $username coming from the form, such as $_POST['username']
                                       // something like this is optional, of course
}

然后,在依赖登录状态的页面上,输入以下内容(不要忘记session_start()):

if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
    echo "Welcome to the member's area, " . $_SESSION['username'] . "!";
} else {
    echo "Please log in first to see this page.";
}

这些是基本组成部分。如果您需要有关SQL方面的帮助,可以在网上找到很多教程。

希望这会对你有所帮助。