PHP:用户管理,数据访问

时间:2016-04-02 08:13:06

标签: php database user-management data-access

我在大学里制作了一个小型网络应用程序,并且在数据访问方面遇到了一些问题。

有3个用户帐户可以登录,之后所有人都可以创建自己的讲座。

问题: 每位教师都应该只看到他创作的讲座而不是其他两位创建的讲座。目前,每位老师都会看到每一堂课。

我不知道我应该在这里发布哪些代码,但我非常感谢任何帮助!

非常感谢!

编辑:谢谢你的回答。我在最近几个小时尝试过,但我不知道该怎么做了。

这是我将代码保存到数据库中的代码。 $ _SESSION似乎存在问题。

    private void btnSave_Click(object sender, EventArgs e)
    {
        AddNames(txtFirstname.Text, txtLastName.Text);
        txtFirstName.Clear();
        txtLastName.Clear();
    }


    public void AddNames(string strFirstName, string strLastName)
    {
        String connString = @"Data Source=ERNIE\SQLEXPRESS;Initial Catalog=LeatherDress;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";


        using(SqlConnection oCON = new SqlConnection(connString))
       {
        SqlCommand oCMD = new SqlCommand("usp_BasqueNames_Insert",oCon);
        oCMD.CommandType = CommandType.StoredProcedure;

        oCMD.Parameters.Add("@First", SqlDbType.Nchar).Value = strFirstName;
        oCMD.Parameters.Add("@Last", SqlDbType.Nchar).Value = strLastName;

        oCON.open();
        oCMD.ExecuteNonQuery();
        oCON.close();
        }
    }

这是我的登录代码:

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;
    }

2 个答案:

答案 0 :(得分:2)

如果没有代码示例,它就不是很精确...... 所以,让我们通用: 存储到数据库中: - 教师(他们每个人都可能有一个独特的登录名或身份证) - 讲座:每个讲座都应包含一个数据来识别您的老师:其唯一的登录名或身份证。

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

登录脚本:

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

$ _ SESSION [&#39;老师&#39;] = $ the_teacher_id

  • 创建讲座时,将教师ID存储到数据库中,并附上讲座的其他数据: INSERT INTO讲座(老师,other_lecture_data)价值观(&#39; $ _ SESSION [老师]&#39;,$ other_lecture_data_value);

  • 当您列出所有可用的讲座时,请使用当前连接的教师唯一登录名或ID进行过滤:

SELECT * FROM讲座WHERE老师=&#39; $ _ SESSION [老师]&#39;;

答案 1 :(得分:1)

您的讲座表应如下所示:

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

您的查询应如下所示:

 protected override void Initialize(HttpControllerContext controllerContext)
    {
        var  newControllerContext = controllerContext
            //edit RouteData to refer to your controller/action
        newControllerContext.RouteData.Values["action"] = "YourAction"
        base.Initialize(newControllerContext);
    }