以下数据提交方法的缺点是什么?


What are the drawbacks in the following data submission methods?

我正在尝试实现在线测试。我发现了两种方法来检查用户选择的答案。

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会随着选择的答案而改变。[我。并在php页面中根据数据库数据检查结果,并将结果显示给用户。

请让我知道是否有比这两种更好的方法来达到这个目的。这些方法的缺点是什么?

一种方法可能是这样的:在服务器端生成相应的表单,不将答案包含在表单中,而是将question <-> answer映射存储在用户会话中。当表单被发送回服务器时,根据会话中存储的正确答案验证用户答案,并向用户发送相应的响应。

如何将表单发送回服务器(通过ajax或仅仅通过html方式)没有区别。

这很容易理解。

way1
如果你正在检索和存储问题本身的答案,那么当然,如果使用你的网站的人知道如何使用inspect element和viewsource以及其他类似的东西,那么他肯定会作弊,你不能做任何事情。

way2
如果需要安全性,使用ajax是唯一的选择。用户单击答案后,发送ajax调用并将该值存储在数据库中,然后在后端检查答案是否正确,然后在ajax响应中向用户显示他的答案是否正确。这样做的缺点是会有更多的服务器端处理,但你需要更安全的应用程序,然后你必须承担这些。您还可以查看可用的缓存服务,以减少对数据库的访问。