Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用PHP和Ajax构建安全测验的好方法_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 用PHP和Ajax构建安全测验的好方法

Javascript 用PHP和Ajax构建安全测验的好方法,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在构建一个PHP/jQuery/AJAX定时测试。 正如您可能已经从AJAX中了解到的那样,我想要完全的测验,这样用户就不必刷新页面或提交任何表单 因此,让我们以数学测验为例。 我想要的是,每次用户回答一个问题时,我都希望它能说明答案是对的还是错的,但我无法解决的问题是,安全地从服务器接收答案,这样用户就无法阅读答案(例如,不是纯文本) 我已经想出了一个办法,以一种脚本或其他东西不能用来作弊的方式来回答问题。为了做到这一点,我会让页面请求来自服务器的问题,并返回一堆图像URL(使用PHP创建

我正在构建一个PHP/jQuery/AJAX定时测试。 正如您可能已经从AJAX中了解到的那样,我想要完全的测验,这样用户就不必刷新页面或提交任何表单

因此,让我们以数学测验为例。 我想要的是,每次用户回答一个问题时,我都希望它能说明答案是对的还是错的,但我无法解决的问题是,安全地从服务器接收答案,这样用户就无法阅读答案(例如,不是纯文本)

我已经想出了一个办法,以一种脚本或其他东西不能用来作弊的方式来回答问题。为了做到这一点,我会让页面请求来自服务器的问题,并返回一堆图像URL(使用PHP创建),这样就可以了

然而,我的问题是,客户机页面如何在用户不知道答案的情况下知道答案?我曾经考虑过在每次回答问题时向服务器发送一个AJAX请求,并检查它是否正确,但是这将花费Wayy太多的时间来完成测验

另一种方法(这是目前为止最好的方法)是发送AJAX请求以获取答案,从中返回的项目是一堆随机的字母和数字,以及类似于“解密”的代码,jQuery脚本可以使用这些代码计算出答案,并检查每个问题后的答案是否正确(因此,基本上混淆了答案,但是使用这种方式,用户可以阅读我的jQuery代码,并使用它来找出它是如何得出答案的,然后破译答案以作弊)

另一种方法是在测验结束时通过AJAX提交所有用户答案,然后服务器检查并返回有多少是对的/错的,然后告诉用户哪些是对的或错的,但是我想避免这种情况,因为我想要一种方法,以便他们在每个问题后知道最后一个问题是对的还是错的


所以我基本上要问的是,有没有任何安全的方法(用户无法找到答案)要在每次测验前使用AJAX从服务器获取答案,并在每个问题后使用jQuery告诉用户答案是对的还是错的?

进行此类测验的最佳实践是在用户回答完所有问题后显示答案。因为用户可能想修改他/她的答案…所以我建议您通过ajax提问,并通过检查用户给出的答案和ajax数据库中的答案来显示最终分数!

进行此类问答的最佳实践是在用户回答完所有问题后显示答案。由于用户可能希望修改其答案…因此我建议您获取问题viajax,并通过检查用户给出的答案和ajax数据库中的答案来显示最终分数!

简短的答案是否定的。 一旦您以可用于确定用户输入的答案是否正确的格式将答案发送给客户端,用户还可以在回答问题之前解密答案

唯一安全的方法是在客户端不提供答案。因此,您需要从服务器获取答案的正确性。我建议寻找加快服务器上验证过程的方法。例如,将答案存储在会话中。

简短的答案是否。 一旦您以可用于确定用户输入的答案是否正确的格式将答案发送给客户端,用户还可以在回答问题之前解密答案


唯一安全的方法是不在客户端站点提供答案。因此,您需要从服务器获取答案的正确性。我建议您寻找加快服务器上验证过程的方法。例如,将答案存储在会话中。

如果您的c若要查看,任何使用浏览器的人都可以看到它们。您必须在服务器上检查答案。没有其他安全方法。“但是,这将花费很多时间”->不,为什么?一个典型的请求需要<100ms,这会对用户体验造成怎样的影响?感谢您对Paul Jan的回复-但是有些人的连接速度可能较慢,因为这是一个定时测试,让我们假设由于某种原因,有些人的连接速度会减慢,无论是几秒钟还是一般较慢,然后发送一条消息每个问题后的ajax请求都会浪费宝贵的时间来完成测验,你的做法是什么?你会混淆代码,这样人们就不会作弊,还是你会在测验后发送答案,尽管用户在回答问题后看不出他们得到的问题是对的还是错的,但答案仍然是错误的确保没有人可以作弊(每个测验都会有一个高分表,这就是我不想作弊的原因)如果答案在浏览器中,代码可以看到,任何使用浏览器的人也可以看到。你必须在服务器上检查答案。没有其他安全的方法。“然而,这需要很多时间"->不,为什么?一个典型的请求需要<100ms,这会对用户体验造成怎样的影响?感谢您对Paul Jan的回复-但是有些人的连接速度可能较慢,因为这是一个定时测试,让我们假设由于某种原因,有些人的连接速度会减慢,无论是几秒钟还是一般较慢,然后发送一条消息每个问题后的ajax请求都会浪费宝贵的时间来完成测验,你的做法是什么?你会混淆代码,这样人们就不会作弊,还是你会在测验后发送答案,尽管用户在回答问题后看不出他们得到的问题是对的还是错的,但答案仍然是错误的确保没有人可以作弊(每个测验都会有一个高分表,这就是为什么我不这么做