2016-04-02 18 views
-1

Я сделал небольшое веб-приложение в университете и имею некоторые проблемы с доступом к данным.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/>"; 
} 
+0

Прежде всего: очень добро пожаловать в stackoverflow! Кажется, это ваша домашняя работа - и люди здесь не любят делать ваши вещи. – sics

+0

Добро пожаловать в SO: чтобы помочь нам помочь вам, что вы пробовали? мы можем дать только общие решения текущего вопроса, которые могут быть вам не полезны. –

ответ

1

Ваша лекция таблица должна выглядеть следующим образом:

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

Ваш запрос должен выглядеть следующим образом:

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

Спасибо за ваш ответ! Я до сих пор не знаю, как мне удалось получить teacher_id в таблице лекций. –

2

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

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

В сценарии входа:

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

$ _SESSION [ «учитель»] = $ the_teacher_id

  • при создании лекции, хранить учителя идентификатор в базу данных, с другими данными лекция: INSERT INTO лекции (учитель, other_lecture_data) VALUES ('$ _SESSION [учитель]', $ other_lecture_data_value);

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

SELECT * FROM лекциями WHERE учителя = '$ _SESSION [учителя]';

+0

Спасибо за ваш ответ. Теоретически это звучит здорово, но у меня все еще есть проблемы с моим кодом. Я отредактировал свой ответ выше. Спасибо! –