база данных — PHP: Управление пользователями, Доступ к данным

Я сделал небольшое веб-приложение в университете, и у меня возникли проблемы с доступом к данным.

Есть 3 учетных записи, которые могут войти в систему, и все они могут создавать свои собственные лекции впоследствии.

Проблема:
Каждый учитель должен видеть только те лекции, которые он создал, а не те, которые создали две другие. На данный момент каждый преподаватель видит каждую лекцию.

Я не знаю, какой код я должен опубликовать здесь, но я очень благодарен за любую помощь!

Спасибо!

Изменить: Спасибо за ваш ответ. Я пробовал последние несколько часов, но понятия не имею, что делать.

Это мой код, где я сохраняю лекцию в базе данных. Кажется, есть проблема с $ _SESSION.

public function save(Vorlesung $vorlesung)
{

try {
$stmt = $this->pdo->prepare('
INSERT INTO vorlesung
(name, login_dozent)
VALUES
(:name, '$_SESSION[dozent]')
');
$stmt->bindParam(':name', $vorlesung->name);
$stmt->execute();
} catch (PDOException $e) {
echo("Fehler! Bitten wenden Sie sich an den Administrator...<br>" . $e->getMessage() . "<br>");
die();
}
return $vorlesung;
}

Это мой код входа в систему:

<?php
require_once("Mapper/DozentManager.php");
require_once("Mapper/Dozent.php");

$login = htmlspecialchars($_POST["login"], ENT_QUOTES, "UTF-8");
$password = htmlspecialchars($_POST["password"], ENT_QUOTES, "UTF-8");

if (!empty($login) && !empty($password)) {
$DozentManager = new DozentManager();
$dozent = $DozentManager->findByLogin($login, $password);
if ($dozent==null) {
header('Location: login.php');
die();
} else {
session_start();
$_SESSION ['dozent'] = $dozent;
$_SESSION ['login'] = "1";
header('Location: index.php');
die();
}
} else {
echo "Error: Bitte alle Felder ausfüllen!<br/>";
}

-1

Решение

Это не очень точно, без примера кода …
Итак, давайте будем общими:
вы храните в своей базе данных:
— учителя (каждый из них может иметь уникальный логин или идентификатор)
— лекции: каждая из них должна включать данные для идентификации вашего учителя: его уникальный логин или идентификатор.

Затем вы сможете фильтровать свои лекции, используя подключенного в данный момент преподавателя, который вы должны хранить, например, в качестве значения сеанса.

На входе в скрипт:

  • проверьте, находится ли учитель в базе данных, используя свой логин + пароль и получает свой уникальный логин или идентификатор. Затем сохраните его в значение сеанса:

$ _SESSION [‘teacher’] = $ the_teacher_id

  • когда вы создаете лекцию, сохраняйте идентификатор учителя в базе данных вместе с другими данными лекции:
    ВСТАВИТЬ В Лекции (учитель, other_lecture_data) ЗНАЧЕНИЯ (‘$ _SESSION [teacher]’, $ other_lecture_data_value);

  • когда вы перечисляете все доступные лекции, отфильтруйте их, используя уникальный логин или идентификатор текущего подключенного учителя:

ВЫБРАТЬ * ИЗ ЛЕКЦИЙ, ГДЕ учитель = ‘$ _SESSION [учитель]’;

2

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

Ваш лекционный стол должен выглядеть так:

id | lecture_name | teacher_id
------------------------------
1  | lecture 1    | 1
2  | lecutre 2    | 2

Ваш запрос должен выглядеть так:

select * from lecture where teacher_id = 1; // or another teacher id
1