[英]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.