我正在尝试实施在线测试。我找到了两种方法来检查用户选择的答案。
WAY1
<div class="qContainer" index="0">
Who has socred 100 centuries in Internationa cricker?
<ul>
<li> <input type="radio" value"Sachin">Sachin</input>
<li> <input type="radio" value"Don">Don Bradman</input>
<li> <input type="radio" value"Steve">Steve waugh</input>
<li> <input type="radio" value"Saeed">Saeed</input>
</ul>
</div>
在这种方法中,我将答案存储在问题[index=0]
中。但是用户可以欺骗这个。
way2
通过ajax post方法将服务器场数据发送到服务器。
$.ajax({
url: "testResult.php",
type:"POST",
data: $("#formID").serialize()
});
使用此方法,Url会根据所选答案进行更改。 [即通过post方法发布答案]并在php页面中根据db数据检查结果并将结果显示给用户。
请告诉我有没有其他方法可以比这更好地实现这一目标。这些方法有哪些缺点?
答案 0 :(得分:1)
一种方法可能如下:在服务器端生成相应的表单,不在表单中包含答案,但将question <-> answer
映射存储在用户会话中。将表单发送回服务器后,验证用户是否根据会话中存储的正确答案进行回答,并向用户发送相应的响应。
如何将表单发送回服务器(通过ajax或只是html方式)没有任何区别。
答案 1 :(得分:1)
这很容易理解。
WAY1
如果您正在检索并存储问题本身的答案,那么如果使用您网站的人知道如何使用检查元素并查看源代码和其他类似的东西,那么他肯定会作弊,您无法做任何事情。
way2
如果需要安全性,使用ajax是唯一的选择。用户点击答案后发送ajax调用并将该值存储在数据库中,然后在后端检查答案是对还是错,然后在ajax响应中向用户显示答案是对还是错。这样做的缺点是会有更多的服务器端处理,但是你需要更安全的应用程序然后你必须承担这一点。您还可以查看可用的缓存服务,以减少数据库的命中率。
我希望这能帮助你。