私が望むように動作しないクエリが書かれています。このスクリプトでは、ログインしようとするユーザーにuser_level 'Admin'
がある場合、彼はadminhome.php
に直接連絡する必要があります。elseifユーザーはuser_level 'Employee'
です。employeehome.php
に連絡する必要があります。私はこの2人のユーザーAmandaをuser_level Admin
で作成し、Hugoをuser_level 'Employee'
としてスクリプトをテストしましたが、ログインしている人であれば$error
を起動します。AND演算子が期待どおりに機能しないPHP mysqliスクリプト
login.php
<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
$myusername = mysqli_real_escape_string($db,$_POST['username']);
$mypassword = $_POST['password'];
$hashedPasswordQry = "SELECT password FROM users WHERE username = '$myusername'";
$userLevel = mysqli_query($db, "SELECT user_level FROM users WHERE username='".$myusername."'");
$result = mysqli_query($db,$hashedPasswordQry);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1 && (password_verify($mypassword, $row['password'])) && $userLevel == 'Admin') {
$_SESSION['login_user'] = $myusername;
header("location: user/adminhome.php");
}elseif($count == 1 && (password_verify($mypassword, $row['password'])) && $userLevel == 'Employee'){
$_SESSION['login_user'] = $myusername;
header("location: user/employeehome.php");
}
else{
$error = '<h5 style="text-align: center;" class="alert alert-danger" >Your username or password is invalid</h5>';
}
}
?>
2つの異なる列に対して同じwhere句を使用して同じテーブルに対して2つの選択クエリを使用するのはなぜですか?あなたが気づいていない場合は、単一のクエリ 'SELECT password、user_level'から複数のカラムを取り出すことができます。 – cteski
@cteski:alright thanks mate。できます。 –
@cteski:あなたは信用を求めていますか...私は自分の答えを残していますか? –