PHP:用户管理,数据访问


PHP: User Management, Data Access

我在大学里做了一个小的web应用程序,在数据访问方面遇到了一些问题。

有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/>";
}

没有代码示例,它不是很精确。。。因此,让我们概括一下:您将存储到数据库中:-教师(他们每个人可能都有一个唯一的登录名或id)-讲座:每个讲座都应该包括一个数据来识别你的老师:它的唯一登录名或id。

然后,您将能够使用当前连接的教师来过滤您的讲座,例如,您应该将其存储为会话值。

登录脚本:

  • 检查教师是否使用其登录名+密码在数据库中,并获得其唯一登录名或id。然后将其存储到会话值中:

$_SESSION['teacher']=$the_tacher_id

  • 创建讲座时,将教师id与讲座的其他数据一起存储到数据库中:插入讲座(教师,其他_体系结构数据)值('$_SESSION[tear]',其他_结构数据值);

  • 当你列出所有可用的讲座时,使用当前连接的教师唯一登录名或id:进行筛选

从讲座中选择*,其中教师='$_SESSION[tear]';

你的演讲表应该是这样的:

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

您的查询应该如下所示:

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