簡體   English   中英

登錄 PHP:用戶級別使用 MYSQL 在單頁登錄

[英]Login PHP: User Level Login in single page using MYSQL

抱歉,如果我要問的是非常基本的問題,但我已經堅持了兩個星期。

我有一個登錄頁面,用戶可以在其中登錄我的網站。 不同用戶的角色將被提示到不同的頁面。 現在,登錄很好,但是當我的用戶輸入錯誤的密碼或用戶名時,沒有觸發警告並且用戶停留在空白登錄。php 頁面當用戶應該被重定向回 index.php 並觸發警告時。

下面是我的代碼

登錄表單(index.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>

這里是我的后端腳本(login.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'; } } }?>

在問之前,我已經閱讀了一些類似的問題,但沒有找到解決方案。 預先感謝您的幫助。

在 login.php 結束時,您將 $error 的值設置為Your PassWord 或 UserName is not Found - 但是沒有進一步發生。

僅當在數據庫中找到用戶時,重定向用戶的開關才會起作用,在旁注中,您應該加密用戶密碼並比較哈希值。

要解決您的問題,請嘗試執行以下操作:

} 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 ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM