我目前正在开发在线考试网络应用。学生可以在那里在线参加考试的地方。老师可以添加考试问题,并为学生检索。我正在使用Codeigniter PHP框架。

对于问题表,我大致是这样的:
javascript - 如何保护JSON响应?-LMLPHP

为了获取该信息,我使用GET方法使用ajax调用,响应将以JSON表示。对于后端,我从该表中选择并使用返回

json_encode()


这是代码:

客户端

function getQuestions() {
    $.ajax({
        url: "exams/getQuestions",
        method: "GET",
        dataType: "json",
        success: function(data) {
            $("#lblA").html(a[0]);
            console.log(data)
        }
    });
}


控制者

public function getQuestions()
{
    $results = $this->ExamModel->getQuestions();
    //print_r($results);

    echo json_encode($results);
}


模型

  public function getQuestions(){
    $this->db->select("*");
    $this->db->from("question");
    $query = $this->db->get();

    if ($query->num_rows() > 0) return $query->result();
    else return false;
  }


我得到的回应是:
javascript - 如何保护JSON响应?-LMLPHP

如您所见,因为在问题表中我有一个right_ans列,它也会显示出来。我认为这是一种安全风险,因为这样学生就会知道答案。因此,我的问题是如何防止学生知道它?

我有一个想法在问题表中再创建一个列ans_d,也有right_ans列,但是在检索数据时,我不选择right_ans列。我仍然不确定,因此感谢您的帮助!

谢谢。

最佳答案

只需修改您的select并选择所需的字段即可:

$this->db->select("id, question, ans_a, ans_b, ans_c");


在这种情况下,没有人会看到任何其他字段,因为它们没有被选中,因此没有传递给客户端。

09-25 20:10
查看更多