Итак, я делаю простую страницу входа на PHP. У меня есть 2 таблицы, одна для персонала (администратор, менеджер и т. Д.) И одна для клиента, обе имеют 3 общих столбца: имя пользователя, пароль, роль. Когда пользователь входит в систему, роль будет установлена в сеансе, чтобы перенаправить пользователя на соответствующую страницу. В настоящее время мой код, как показано ниже:
function.php
function queryMySQL($query)
{
global $conn;
$result = $conn->query($query);
if(!$result)
{
die($conn->error);
}
return $result;
}
function passwordToToken($password)
{
global $salt1;
global $salt2;
$token = hash("ripemd128", "$salt1$password$salt2");
return $token;
}
login.php
<?php
require_once 'function.php'
$user = $_POST['user'];
$pass = $_POST['pass'];
$token = passwordToToken($pass); //encrypt password
$query = "Select userId, username, password, role
from users
where username = '$user'
and password = '$token'
union
Select customerId, username, password, role
from customer
where username = '$user'
and password = '$token'";
$result = queryMySQL($query); //function return mysqli_query
if($result->num_rows == 0)
{
$error = "Username/password is invalid";
echo $error;
} else {
session_start();
$_SESSION['uId'] = mysqli_fetch_array($result)[0];
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
$role = mysqli_fetch_array($result)[3];
if($role != 'admin' || $role != 'staff' || $role != 'manager')
{
$_SESSION['role'] = 'customer';
} else {
$_SESSION['role'] = $role;
}
echo $role;
}
?>
Моя проблема в том, что при правильном входе пользователя переменная $role
остается пустой, однако, если я повторяю $_SESSION['uId']
, она возвращает результат (userID), и даже если я изменю значение $_SESSION['uId']
на mysqli_fetch_array ($ result) [3] Я все еще получаю правильный результат, когда echo (роль пользователя).