【问题标题】:PHP check if user is an admin/user and display buttonsPHP检查用户是否是管理员/用户并显示按钮
【发布时间】:2020-03-22 20:10:27
【问题描述】:

我不是 PHP 专家,所以需要一点帮助。

我的网站上有一个登录功能,可以检查用户是管理员还是普通用户,效果很好。

我正在添加一个新功能,系统应检查用户是否已登录并显示不同的按钮。

  • 如果用户未登录,则显示登录/注册按钮。
  • 如果用户以用户身份登录,则显示 user.php 按钮和
    注销.php
  • 如果用户是管理员,则显示 admin.php 和 logout.php

但是,它只对用户有效。我错过了什么? UserTypeID 在数据库中为用户设置 1,为管理员设置 2。

session_start();
<?php
if(isset($_SESSION['UserTypeID']) == 1) //check if user is a user and display buttons
{
?>
    <li><a href="user.php">My Account</a></li>
    <li><a href="logout.php">Logout</a></li>

<?php } elseif(isset($_SESSION['UserTypeID']) == 2) //check if user is an admin and display buttons
{
?>
    <li><a href="admin.php">My Account</a></li>
    <li><a href="logout.php">Logout</a></li>

<?php  }else{ // if user is not logged in then display these buttons?> 
    <li><a href="signin.php">Sign In</a></li>
    <li><a href="signup.php">Sign Up</a></li>
<?php } ?>


【问题讨论】:

  • isset($_SESSION['UserTypeID']) 是 0 或 1,绝不是 2。
  • session_start();&lt;?php 之外?
  • 嗨 Gerard,在我的数据库中,管理员设置为 2,它可以正常登录。不要认为这是一个问题
  • 嗨,kerbholz,是的,我意识到了这一点。但这并不能解决问题。缺少其他东西。谢谢
  • @DawidOskwarek 你需要检查的是 $_SESSION['UserTypeID'] == 2,没有 isset

标签: php button hide admin display


【解决方案1】:

做这样的事情。这会奏效。

<?php 
session_start();
if(!empty($_SESSION['UserTypeID']) && $_SESSION['UserTypeID']== 1) //check if user is a user and display buttons
{
?>
<li><a href="user.php">My Account</a></li>
<li><a href="logout.php">Logout</a></li>

<?php } else if(!empty($_SESSION['UserTypeID']) && $_SESSION['UserTypeID']== 2) //check if user is an admin and display buttons
{
?>
<li><a href="admin.php">My Account</a></li>
<li><a href="logout.php">Logout</a></li>

<?php  }else{ // if user is not logged in then display these buttons?> 
<li><a href="signin.php">Sign In</a></li>
<li><a href="signup.php">Sign Up</a></li>

<?php } ?>

【讨论】:

    【解决方案2】:

    isset($_SESSION['UserTypeID']) 返回truefalse

    session_start();
    <?php if(isset($_SESSION['UserTypeID']) && $_SESSION['UserTypeID']== 1) //check if user is a user and display buttons
        {
        ?>
        <li><a href="user.php">My Account</a></li>
        <li><a href="logout.php">Logout</a></li>
    
        <?php } elseif(isset($_SESSION['UserTypeID']) && $_SESSION['UserTypeID'] == 2) //check if user is an admin and display buttons
        {
        ?>
        <li><a href="admin.php">My Account</a></li>
        <li><a href="logout.php">Logout</a></li>
    
    
    <?php  }else{ // if user is not logged in then display these buttons?> 
    <li><a href="signin.php">Sign In</a></li>
    <li><a href="signup.php">Sign Up</a></li>
    <?php } ?>
    

    【讨论】:

    • @DawidOskwarek 不要忘记接受它作为答案。谢谢。
    【解决方案3】:

    session_start()函数需要写在php里面,编码如下:

      <?php 
        session_start();
        if(isset($_SESSION['UserTypeID']) && $_SESSION['UserTypeID']== 1) //check if user is a user and display buttons
         {
         ?>
       <li><a href="user.php">My Account</a></li>
       <li><a href="logout.php">Logout</a></li>
    
      <?php } elseif(isset($_SESSION['UserTypeID']) && $_SESSION['UserTypeID'] == 2) //check if user is an admin and display buttons
           {
          ?>
         <li><a href="admin.php">My Account</a></li>
       <li><a href="logout.php">Logout</a></li>
    
    
       <?php  }else{ // if user is not logged in then display these buttons?> 
      <li><a href="signin.php">Sign In</a></li>
      <li><a href="signup.php">Sign Up</a></li>
     <?php } ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      相关资源
      最近更新 更多