Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 管理员在不知道用户密码的情况下以用户身份登录?_Php_Mysql - Fatal编程技术网

Php 管理员在不知道用户密码的情况下以用户身份登录?

Php 管理员在不知道用户密码的情况下以用户身份登录?,php,mysql,Php,Mysql,我试图提供一个管理员功能,管理员可以作为另一个用户登录,而不知道他们的密码。所有网站内容均受权限控制。我的问题是—— 我应该在切换到用户帐户之前注销管理员用户吗? 这是否意味着管理员必须重新登录 如果我需要切换回管理员帐户-由于“用户”没有管理员权限,但我以前以管理员身份登录,我该如何操作 还有什么我需要记住的吗 你有什么建议 我不熟悉CI,但这里有一个通用解决方案: 选择模拟用户时,您可以: 将用户id作为管理员用户id存储在会话中 将会话中的用户id替换为目标用户id(即,在成功登录期

我试图提供一个管理员功能,管理员可以作为另一个用户登录,而不知道他们的密码。所有网站内容均受权限控制。我的问题是——

  • 我应该在切换到用户帐户之前注销管理员用户吗? 这是否意味着管理员必须重新登录
  • 如果我需要切换回管理员帐户-由于“用户”没有管理员权限,但我以前以管理员身份登录,我该如何操作
  • 还有什么我需要记住的吗

你有什么建议

我不熟悉CI,但这里有一个通用解决方案:

选择模拟用户时,您可以:

  • 将用户id作为管理员用户id存储在会话中
  • 将会话中的用户id替换为目标用户id(即,在成功登录期间执行任何操作)
如果会话中存在管理员用户id,请在某处显示“结束模拟”链接。单击该链接时,您将:

  • 将会话中的用户id替换为管理员用户id
  • 从会话中删除管理员用户id

我不熟悉CI,但这里有一个通用解决方案:

选择模拟用户时,您可以:

  • 将用户id作为管理员用户id存储在会话中
  • 将会话中的用户id替换为目标用户id(即,在成功登录期间执行任何操作)
如果会话中存在管理员用户id,请在某处显示“结束模拟”链接。单击该链接时,您将:

  • 将会话中的用户id替换为管理员用户id
  • 从会话中删除管理员用户id
  • 不要破坏管理会话

  • 检查是否设置了管理会话

    if(isset($_SESSION['admin']))
    {
          //authenticate the user without checking the password,only check the uname 
    }
    else
    {
        //authenticate the user by checking both username and password
    } 
    
  • 记住为用户和管理员保留两个单独的会话

  • 我希望这样就可以了

  • 不要破坏管理会话

  • 检查是否设置了管理会话

    if(isset($_SESSION['admin']))
    {
          //authenticate the user without checking the password,only check the uname 
    }
    else
    {
        //authenticate the user by checking both username and password
    } 
    
  • 记住为用户和管理员保留两个单独的会话


  • 我希望这样做

    如果用户注销,您如何知道他是否是管理员?还有,你为什么要这么做?我不想让一些管理员访问我的帐户我正在使用CodeIgniter,但建议不必是特定于CI的!博诺-这是一项要求,因为有时用户的帐户中存在某些问题,管理员可以为他们解决。在Facebook上,你可以“在其他用户查看你的个人资料时查看”,我认为这是一项很好的功能,如果它适合你的网站,你可以这样做。然而,这不是一个共同的特征。您必须重新执行身份验证脚本和登录脚本,以便管理员可以将更改作为另一个用户传递。@Bono:用户模拟有很多非常有效的理由。检查复杂权限是否正确就是其中之一。除此之外,管理员可能有直接的数据库访问权限,这样对他来说就更容易了。如果你让用户注销,你怎么知道他是否是管理员?还有,你为什么要这么做?我不想让一些管理员访问我的帐户我正在使用CodeIgniter,但建议不必是特定于CI的!博诺-这是一项要求,因为有时用户的帐户中存在某些问题,管理员可以为他们解决。在Facebook上,你可以“在其他用户查看你的个人资料时查看”,我认为这是一项很好的功能,如果它适合你的网站,你可以这样做。然而,这不是一个共同的特征。您必须重新执行身份验证脚本和登录脚本,以便管理员可以将更改作为另一个用户传递。@Bono:用户模拟有很多非常有效的理由。检查复杂权限是否正确就是其中之一。除此之外,管理员还可以直接访问数据库,这样对他来说就更容易了。。我通常会清除会话以注销用户-所以我想在来回切换时可能必须手动取消设置()与“用户”或“管理员”相关的会话数据?(为了在会话中保持管理员id)嗯。。我通常会清除会话以注销用户-所以我想在来回切换时可能必须手动取消设置()与“用户”或“管理员”相关的会话数据?(为了保持会话中的管理员id)其所有权限都是基于权限的,因此“管理员”和“其他用户”没有明确的角色。其所有权限都是基于权限的,因此“管理员”和“其他用户”没有明确的角色