Логин PHP: уровень пользователя. Войти на одной странице, используя MYSQL - PullRequest
0 голосов
/ 22 апреля 2020

извините, если то, что я собираюсь спросить, является чем-то действительно базовым c, но я застрял на этом две недели.

У меня есть страница входа, где пользователь может войти на мой сайт , Разные роли пользователя будут отображаться на разных страницах. Теперь логин в порядке, но когда мой пользователь вводит неверный пароль или имя пользователя, предупреждение не выдается, и пользователь остается на пустой странице входа. php, когда пользователь должен быть перенаправлен обратно на индекс. php и предупреждение сработало.

Ниже мой код

Форма входа (индекс. php)

<div class="login-box-body">
  <form method="post" action="login.php">
    <div class="form-group has-feedback">
      <input type="username" name="username" class="form-control" placeholder="Username">
      <span class="glyphicon glyphicon-user form-control-feedback"></span>
    </div>
    <div class="form-group has-feedback">
      <input type="password" name="password" class="form-control" placeholder="Password">
      <span class="glyphicon glyphicon-lock form-control-feedback"></span>
    </div>
    <div class="row">
      <div class="col-xs-8">
      </div>
      <!-- /.col -->
      <div class="col-xs-4">
        <button class="btn btn-primary btn-block btn-flat" type="submit" name="login" value="true">Sign In</button>
      </div>
      <!-- /.col -->

    </div>
  </form>
</div>

и вот мой сценарий бэкэнда (логин. php)

<?php
session_start();
$conn=mysqli_connect('localhost','root','','snapshot');
//Getting Input value
if(isset($_POST['login'])){
  $username=mysqli_real_escape_string($conn,$_POST['username']);
  $password=mysqli_real_escape_string($conn,$_POST['password']);
  if(empty($username)&&empty($password)){
  $error= 'Fields are Mandatory';
  }else{
 //Checking Login Detail
 $result=mysqli_query($conn,"SELECT*FROM user WHERE username='$username' AND password='$password'");
 $row=mysqli_fetch_assoc($result);
 $count=mysqli_num_rows($result);
 if($count==1){
      $_SESSION['user']=array(
	'id' =>$row['id'],
	'username'=>$row['username'],
	'uname'=>$row['uname'],
	'password'=>$row['password'],
	'role'=>$row['role']
   );
   $role=$_SESSION['user']['role'];
   //Redirecting User Based on Role
    switch($role){
  case 'user':
  header('location:user/dashboard.php');
  break;
  case 'management':
  header('location:management/index.php');
  break;
  case 'admin':
  header('location:admin/index.php');
  break;
 }
 }else{
 $error='Your PassWord or UserName is not Found';
 }
}
}
?>

и, прежде чем задавать вопросы, я уже прочитал несколько похожих вопросов и не нашел решений. Заранее благодарю за помощь.

1 Ответ

2 голосов
/ 22 апреля 2020

В конце входа в систему. php вы устанавливаете значение $ error на Ваш пароль или имя пользователя не найден - однако дальше ничего не происходит.

Ваш переключатель который перенаправляет пользователя, вступает в игру только в том случае, если пользователь найден в базе данных. В примечании здесь вы должны зашифровать пароль пользователя и сравнить хэши.

Чтобы решить вашу проблему, попробуйте сделать что-то вроде следующее:

} else {
 $error='Your PassWord or UserName is not Found';
 header('location:login.php?error=' . $error);
}

Затем в форме входа в систему вы можете просто проверить сообщение об ошибке и отобразить его:

<?php if(isset($_GET['error'])): ?>
<div><?= $_GET['error'] ?></div>
<?php endif ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...