繁体   English   中英

为不同类型的用户更改导航按钮

[英]Change navigation button for different type of users

我想以不同的方式为管理员和客户添加额外的导航按钮。如果管理员登录了一个额外的导航按钮,则应该为客户添加一个相同的导航按钮。 我没有收到任何错误,但是 if else 块 (user_type) 没有执行,我也没有得到任何额外的导航按钮。 我的代码有什么问题。

索引.php

<div class="navbar-collapse collapse">
          <div class="menu">
            <ul class="nav nav-tabs" role="tablist">
              <li role="presentation"><a href="index.php" class="active"  >Home</a></li>
              <li role="presentation"><a href="subscribe.php" >Subscribe</a></li>
              <li role="presentation"><a href="signup.php">Sign up</a></li>
              <?php

              if(isset($_SESSION['login_user']))  //check if user is logged in
              {

                if(!empty($_POST['user_type']))
                   {
                       $user_type=$_POST['user_type'];
                       if($user_type==1)                //type 1 is admin
                       {
                echo'<li role="presentation"><a href="customers.php">Customers</a></li>';
                echo'<li role="presentation"><a href="logout.php">Logout</a></li>';
                       }
                      elseif($user_type==2) {             //type 2 is customer
                echo'<li role="presentation"><a href="account.php">My account</a></li>';
                echo'<li role="presentation"><a href="logout.php">Logout</a></li>';
                      }
                  }              
              }

              else{
                    echo'<li role="presentation"><a href="login.php">Login</a></li>';
                }   
              ?>
              <li role="presentation"><a href="contact.php">Contact</a></li>
            </ul>
          </div>
        </div>

注册.php

    <form action="psignup.php"  method="POST" class="register-form" id="register-form">
    <select required type="text" name="user_type" class="dropdown">
                                        <option value="NULL">Select User Type</option>
                                        <option value=1>Admin</option>
                                        <option value=2>Customer</option>
                                    </select>
</form>

$_POST['user_type']将只存在一次,在用户第一次完成您的注册表后。 这就是 POST 变量的工作方式——它们填充了用户在当前请求中提交的数据; 它们不会在后续请求中持续存在。

所以如果你想在用户登录后为每个页面显示菜单,那么你就不能使用它。 您需要将用户类型值存储在 Session 中,并从那里获取它(就像您已经使用login_user值一样。)

我想在登录后,您验证用户的凭据并创建$_SESSION['login_user']

使用相同的逻辑来验证用户,并根据他/她的用户类型,在$_SESSION['login_user']设置后立即在条件语句中创建$_SESSION['user_type']

这样,您就可以在您网站的每个页面中检查if($_SESSION['user_type'] == 1)

请记住在注销期间清除或销毁您的$_SESSION变量,并在将它们分配到您的会话之前过滤您发布的值(即htmlspecialchars(strip_tags($_POST['user_type'], ENT_QUOTES))请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM