![](/img/trans.png)
[英]not able to verify user from database symfony 4 redirecting to same login page
[英]Redirecting user to dashboard with their user role from same login page
我已经根据用户在同一登录页面的仪表板中的角色来引导用户。
但是有了这个,用户只需提供管理员 url 就可以转到用户仪表板。
如何防止用户在登录后进入管理仪表板?
登录代码如下。
if(isset($_POST['login'])){
$username = $_POST['username'];
$password = $_POST['password'];
//if the user try to enter without typing anything.
if($username !="" && $password !==""){
/*$password = sha1($password);*/
$sql = "SELECT * FROM users WHERE username ='$username'AND password='$password'";
$result=mysqli_query($conn, $sql) or die('Error');
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_assoc($result)){
$user_id = $row['user_id'];
$fullname = $row['fullname'];
$username = $row['username'];
$phone_number = $row['phone_number'];
$state = $row['state'];
$city = $row['city'];
$street = $row['street'];
$email = $row['email'];
$user_role = $row['user_role'];
//Starting the session for the user
$_SESSION['user_id'] = $user_id;
$_SESSION['fullname'] = $fullname;
$_SESSION['username'] = $username;
$_SESSION['phone_number'] = $phone_number;
$_SESSION['state'] = $state;
$_SESSION['city'] = $city;
$_SESSION['street'] = $street;
$_SESSION['email'] = $email;
$_SESSION['user_role'] = $user_role;
if($user_role == admin){
header('Location:admin/admindashboard.php');
}else{
header('Location:user/userdashboard.php');
}
}
}else{
$error="Username or Password is incorrect!!";
}
}else{
$error = "Please Enter Username and Password";
}
}
您需要确保每个用户的特定条件匹配,以便他们不会通过输入 URL 进行导航。
从您的编码假设您已经将用户重定向到相关页面。 确保您在以下文件中进行了验证检查。
将此添加到admindashboard.php的标题中
if( $_SESSION['user_role'] != "admin")
{
session_destroy();
header("location: login.php");
}
将此添加到userdashboard.php的标题中
if( $_SESSION['user_role'] != "user")
{
session_destroy();
header("location: login.php");
}
使用上述代码,您将阻止其他不同类型的用户访问网站的不同部分。
如何防止用户在登录后进入管理仪表板?
通过在该页面(在admindashboard.php
)执行相同的检查。 无论$user_role
和admin
是什么,您都可以在需要该权限的任何页面上检查相同的逻辑。 如果检查失败,重定向(可能到登录页面,提示用户使用可以访问该页面的帐户登录)。
例如:
if($_SESSION['user_role'] != admin) {
header('Location:login.php');
}
您无法阻止用户请求任何页面。 您可以相应地响应该请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.