доступ на основе ролей со значением внешнего ключа

Я немного новичок в php и базе данных. Я разработал веб-приложение для доступа на основе ролей. Сценарий в том, что у меня есть 2 таблицы

  1. tbl_user

столбцы -> user_id, username, school_id (school_id — внешний ключ)

  1. tbl_school

столбцы -> school_id, school_name

Есть только 2 роли
админ & пользователь
пользователи будут основаны на школах, как только пользователь будет создан, имя школы будет связано с именем пользователя & Идентификатор пользователя

Теперь я могу показать идентификатор, будь то администратор или пользователь

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

буду очень благодарен за помощь

index.php

        $errors = array(
1=>"Invalid user name or password, Try again",
2=>"Please login to access this area");

$error_id = isset($_GET['err']) ? (int)$_GET['err'] : 0;

if ($error_id == 1) {
echo '<p class="text-danger">'.$errors[$error_id].'</p>';
}elseif ($error_id == 2) {
echo '<p class="text-danger">'.$errors[$error_id].'</p>';
}
?>
<form action="authenticate.php" method="post" role="form">
<div class="form-group">
<label>UserName :</label>
<input id="name" name="username" placeholder="username" type="text" class="form-control" required autofocus></div>
<div class="form-group">
<label>Password :</label>
<input id="password" name="password" placeholder="**********" type="password" class="form-control" required></div>

<input name="submit" type="submit" value=" Login " class="btn btn-primary btn-lg btn-block">
</form>

AUTHENTICATE.PHP

<?php
require 'database-config.php';
session_start();
$username = "";
$password = "";

if(isset($_POST['username'])){
$username = $_POST['username'];
}
if (isset($_POST['password'])) {
$password = $_POST['password'];

}

$q = 'SELECT * FROM tbl_user WHERE username=:username AND password=:password';
$query = $dbh->prepare($q);
$query->execute(array(':username' => $username, ':password' => $password));

if($query->rowCount() == 0){
header('Location: index.php?err=1');
}else{

$row = $query->fetch(PDO::FETCH_ASSOC);

session_regenerate_id();
$_SESSION['sess_user_id'] = $row['id'];
$_SESSION['sess_username'] = $row['username'];
$_SESSION['sess_userrole'] = $row['role'];

echo $_SESSION['sess_userrole'];
session_write_close();

$multirole = $row['role'];

switch ($multirole) {

case "admin":
header('Location: dashboard.php');
break;

case "user":
header('Location: user_dashboard.php');
break;

default:
echo "No User Found ! Please Contact Admin";
}
}? >

DASHBOARD.PHP

<?php
session_start();
$role = $_SESSION['sess_userrole'];
if(!isset($_SESSION['sess_username']) || $role!="admin"){
header('Location: index.php?err=2');
}
? >
html......
Welcome : <?php echo $role; ? >

1

Решение

Ну, это всего лишь краткое предложение, основанное на моем прочтении вашего вопроса.

Таким образом, вы можете задать свои вопросы о базе данных … т.е.
Дайте мне название школы, в которой находится user_id. Вы бы сделали что-то вроде (и это не проверенный код …)

$q = 'SELECT u.username,s.school_name FROM tbl_user u
JOIN tbl_school s ON u.school_id = s.school_id
WHERE u.user_id=:user_id';

И вам просто нужно дать ему правильный user_id, который вы можете выяснить.

Так что это спрашивает, учитывая user_id (как вы уже знаете) Дайте мне название школы в tbl_school, которая связана с school_id в таблице пользователя для этого user_id.

Имеет ли это смысл?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]