我目前正在开发在线考试网络应用。学生可以在那里在线参加考试的地方。老师可以添加考试问题,并为学生检索。我正在使用Codeigniter PHP框架。
对于问题表,我大致是这样的:
为了获取该信息,我使用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;
}
我得到的回应是:
如您所见,因为在问题表中我有一个right_ans列,它也会显示出来。我认为这是一种安全风险,因为这样学生就会知道答案。因此,我的问题是如何防止学生知道它?
我有一个想法在问题表中再创建一个列ans_d,也有right_ans列,但是在检索数据时,我不选择right_ans列。我仍然不确定,因此感谢您的帮助!
谢谢。
最佳答案
只需修改您的select
并选择所需的字段即可:
$this->db->select("id, question, ans_a, ans_b, ans_c");
在这种情况下,没有人会看到任何其他字段,因为它们没有被选中,因此没有传递给客户端。