如何在php中添加用户角色
我试图将我的用户和管理员重定向到某些特定页面,但我的php代码将管理员和用户重定向到同一页面如何在php中添加用户角色,php,mysql,Php,Mysql,我试图将我的用户和管理员重定向到某些特定页面,但我的php代码将管理员和用户重定向到同一页面 if (isset($_POST['Login'])) { $username = $_POST['username']; $password = $_POST['surname']; $password_hash = md5($password); $role; if (!empty($username) && (!empty($password
if (isset($_POST['Login'])) {
$username = $_POST['username'];
$password = $_POST['surname'];
$password_hash = md5($password);
$role;
if (!empty($username) && (!empty($password)))
{
$query = "SELECT 'id' FROM users WHERE 'staffno' = '$username' AND 'password'='$password_hash'";
$run = mysqli_query($conn, $query);
if ($run) {
$sql = "SELECT users.role FROM users";
$result = mysqli_query($conn, $sql);
$user = mysqli_fetch_array( $result);
//$_SESSION['admin'] = $user['admin'];
$_SESSION['role'] = "admin";
if((isset($_SESSION['role']) && $_SESSION['role'] == "admin")){
header("location: Upload.php");
}else{
header("location: Home.php");
}
}
我假设你是从最高层开始的。此后,您已硬编码了
$\u会话['role']
变量
$_SESSION['role'] = "admin";
而且,这永远是真的
if((isset($_SESSION['role']) && $_SESSION['role'] == "admin")){
您需要使用
$_SESSION['role'] = $user['role'];
我假设你是从最高层开始的。此后,您已硬编码了
$\u会话['role']
变量
$_SESSION['role'] = "admin";
而且,这永远是真的
if((isset($_SESSION['role']) && $_SESSION['role'] == "admin")){
您需要使用
$_SESSION['role'] = $user['role'];
您需要在会话中存储动态用户角色
$_SESSION['role'] = "admin";
改为
$_SESSION['role'] = $user['Your_User_Role_coulmn_name'];
此脚本$user=mysqli\u fetch\u数组($result)
将返回有关所选用户的所有信息,因此如果要在同一个表中存储用户角色,则可以在会话中存储用户角色值。这样,您的if语句将按照要求发挥作用
另外,对于使用会话,您需要在使用会话之前添加会话\u start()
请检查示例
session_start();
if (isset($_POST['Login'])) {
$username = $_POST['username'];
$password = $_POST['surname'];
$password_hash = md5($password);
$role;
if (!empty($username) && (!empty($password)))
{
$query = "SELECT `id` FROM users WHERE `staffno` = '$username' AND `password`='$password_hash'";
$run = mysqli_query($conn, $query);
if ($run) {
$sql = "SELECT users.role FROM users";
$result = mysqli_query($conn, $sql);
$user = mysqli_fetch_array( $result);
$_SESSION['role'] = "admin"; // this approach will be always same
$_SESSION['role'] = $user['Your_User_Role_coulmn_name']; // you need to store dynamic user role into the session
if((isset($_SESSION['role']) && $_SESSION['role'] == "admin")){
header("location: Upload.php");
}else{
header("location: Home.php");
}
}
}
}
您需要在会话中存储动态用户角色
$_SESSION['role'] = "admin";
改为
$_SESSION['role'] = $user['Your_User_Role_coulmn_name'];
此脚本$user=mysqli\u fetch\u数组($result)
将返回有关所选用户的所有信息,因此如果要在同一个表中存储用户角色,则可以在会话中存储用户角色值。这样,您的if语句将按照要求发挥作用
另外,对于使用会话,您需要在使用会话之前添加会话\u start()
请检查示例
session_start();
if (isset($_POST['Login'])) {
$username = $_POST['username'];
$password = $_POST['surname'];
$password_hash = md5($password);
$role;
if (!empty($username) && (!empty($password)))
{
$query = "SELECT `id` FROM users WHERE `staffno` = '$username' AND `password`='$password_hash'";
$run = mysqli_query($conn, $query);
if ($run) {
$sql = "SELECT users.role FROM users";
$result = mysqli_query($conn, $sql);
$user = mysqli_fetch_array( $result);
$_SESSION['role'] = "admin"; // this approach will be always same
$_SESSION['role'] = $user['Your_User_Role_coulmn_name']; // you need to store dynamic user role into the session
if((isset($_SESSION['role']) && $_SESSION['role'] == "admin")){
header("location: Upload.php");
}else{
header("location: Home.php");
}
}
}
}
你能先改变一下密码吗到
$password=$\u POST['password']
并查看它是否解决了您的问题。您可以从更改$password=$\u POST['names']开始吗
到$password=$\u POST['password']编码>并查看它是否解决了您的问题。尝试使用以下方法:
$_SESSION['role'] = $user['database-role-column-name'];
尝试使用以下方法:
$_SESSION['role'] = $user['database-role-column-name'];
试一试
还可以尝试通过添加
限制0,1
您的代码现在甚至很短试试看
还可以尝试通过添加
限制0,1
您的代码现在甚至很短您的期望是什么?你说的同一页是什么意思?哪个页面?您是否初始化了会话_start()?请不要在生产中使用此代码。每次使用“
,您都会创建一个字符串,这是预期的吗?你说的同一页是什么意思?哪个页面?您是否初始化了会话_start()?请不要在生产中使用此代码。每次使用“
,您都会创建一个字符串。我尝试过此操作,但它仍将两个用户重定向到同一页面。我尝试过此操作,但它仍将两个用户重定向到同一页面。