【问题标题】:Give a name to a session and check if a session with that name exists为会话命名并检查是否存在具有该名称的会话
【发布时间】:2014-08-18 16:27:34
【问题描述】:

我正在构建一个网站,其中针对不同类型的用户(例如客户和销售人员)提供 3 种登录页面。有些页面应该仅供指定用户访问。如果有人试图进入特定页面,我希望脚本检查是否允许该人这样做。

在我看来,我应该在每个登录页面以及当有人尝试访问特定页面时创建不同的会话名称,以检查它是否在正确的位置是正确的人。

我知道检查是否存在任何会话可以通过

isset($_SESSION)

我还在这里找到了一些关于 session_name 的信息:http://php.net/manual/en/function.session-name.php

但我似乎没有把这两件事放在一起。有人可以提出解决方案吗?我已经学习 PHP 3 周了,所以请放轻松。

【问题讨论】:

  • $_SESSION 是简单的数组,所以isset($_SESSION['name'])
  • 出于安全原因,我不建议这样做。 SESSION 本身是用户的临时身份。您可以将 $_SESSION 用作数组,它处理您希望存储(临时)给当前用户的所有数据。例如:$_SESSION['is_salesman'] = true;在每个请求上设置。
  • 你必须阅读ACL(访问控制列表)stackoverflow.com/questions/4415663/…
  • @M1K1O 这段代码是否正确:session_name("mySession"); 然后isset($_SESSION['mySession']) 在 IF 语句中使用?
  • 我认为你最好使用$_SESSION["hasPermission"] = true;,然后通过IF语句检查。

标签: php session


【解决方案1】:

通过注册,您设置用户权限 1 和 2,并与用户名和哈希密码一起保存到数据库

| ID | Username |            Password Hash         | User Level |
| 1  |  User01  | t5ns4fdgn6sdn45d4t5zuk65fz6s4dt1 |      1     |
| 2  |  User02  | e8tdzjui56jn4fgvh635csd6trz6ghr8 |      2     |

每次登录时,您都将用户级别设置为$_SESSION["userLevel"]

在您想要保护的页面上执行以下操作(在文档的开头):

function UserLevel($level){
  if($_SESSION["userLevel"] == $level){
    header("Location: index.php");
    exit;
  }
}

您可以对用户进行排序:

UserLevel(1); // Only user 1 can access this page
UserLevel(2); // Only user 2 can access this page 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2011-12-29
    • 2018-04-04
    • 2013-02-26
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多