Я сделал небольшое веб-приложение в университете, и у меня возникли проблемы с доступом к данным.
Есть 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/>";
}
Это не очень точно, без примера кода …
Итак, давайте будем общими:
вы храните в своей базе данных:
— учителя (каждый из них может иметь уникальный логин или идентификатор)
— лекции: каждая из них должна включать данные для идентификации вашего учителя: его уникальный логин или идентификатор.
Затем вы сможете фильтровать свои лекции, используя подключенного в данный момент преподавателя, который вы должны хранить, например, в качестве значения сеанса.
На входе в скрипт:
$ _SESSION [‘teacher’] = $ the_teacher_id
когда вы создаете лекцию, сохраняйте идентификатор учителя в базе данных вместе с другими данными лекции:
ВСТАВИТЬ В Лекции (учитель, other_lecture_data) ЗНАЧЕНИЯ (‘$ _SESSION [teacher]’, $ other_lecture_data_value);
когда вы перечисляете все доступные лекции, отфильтруйте их, используя уникальный логин или идентификатор текущего подключенного учителя:
ВЫБРАТЬ * ИЗ ЛЕКЦИЙ, ГДЕ учитель = ‘$ _SESSION [учитель]’;
Ваш лекционный стол должен выглядеть так:
id | lecture_name | teacher_id
------------------------------
1 | lecture 1 | 1
2 | lecutre 2 | 2
Ваш запрос должен выглядеть так:
select * from lecture where teacher_id = 1; // or another teacher id