我目前正在开发一个在线考试网络应用程序。学生可以在线参加考试。教师可以添加考试问题,并将为学生检索。我正在使用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 列。我仍然不确定,所以我感谢所有的帮助!
谢谢。
答案 0 :(得分:1)
只需修改您的select
并选择您需要的字段:
$this->db->select("id, question, ans_a, ans_b, ans_c");
在这种情况下,没有人会看到任何其他字段,因为它们未被选中,因此不会传递给客户。
答案 1 :(得分:1)
只需获取除answer:
之外的所有列 $this->db->select("ans_a,ans_b,ans_c,id,question");