1

我想我被困住了,我真的希望有人能在这里帮助我。

因此,我正在尝试使用 PHP 和 JS 制作类似于测验应用程序的东西。这个想法是给用户一张包含 4 个可能答案的图片,他必须猜测那张图片中有什么。用户根据他单击的答案获得 x 分,并被重定向到下一页,包括图片和答案,等等。用户也有机会跳到下一页。事情是这样的:

我如何检查用户是否已经回答了特定问题,所以如果这个问题已经被回答,我可以将他重定向到下一页?基本上,这就像防止作弊一样,使用户无法从同一个问题中获得越来越多的分数。

我目前坚持使用 MySQL 解决方案,为每个页面创建列,在那里存储值,然后在用户尝试访问特定页面时比较它们,根据存储的值重定向他。它是唯一的解决方案吗?

如果我的英语不是那么好,我很抱歉,我希望你们能理解我的问题。:)

4

4 回答 4

0

将每个问题的唯一值存储到会话变量中。如果该会话变量存在,则重定向到下一页。

// init.php
session_start();


// question1.php
require 'init.php';
if (isset($_SESSION['question1'])
    header('location: http://mysite.com/question2.php');
else
    $_SESSION['question1'] = TRUE;

// put the question code here
于 2012-11-09T19:04:25.917 回答
0

您可能需要使用 MySQL db,因此它是一个永久解决方案,但您不需要为每个页面创建新列。你可以只有 1 列和行数据是一个 JSON 对象,你可以继续引用它

{page1:'done'}

那么当你要保存时,它可能看起来像这样

{page1:'done',page2:'done'}

您可以为此使用 json_encode 和 json_decode php 函数。

http://php.net/manual/en/function.json-decode.php

http://php.net/manual/en/function.json-encode.php

于 2012-11-09T19:12:24.497 回答
0

您提到,该用户可以登录和注销。因此,我假设您已经有一个用户数据库,并且您希望以某种方式存储特定用户已经回答了哪些问题,但是您不知道将这些信息存储到 MySQL 数据库中的正确方法是什么。

现在,如果我错了,我很抱歉,你的意思,但如果我的假设是正确的,那么有几种方法,如何存储你想要保存的数据。例如,您可以在包含用户的表中添加另一列,该列将包含用户回答的最后一个问题。每次用户回答下一个问题时,您都可以更新该值。

因此,即如果您有 4 个问题,则该列将为空。当您进入有问题的页面时,您会查看数据库,该用户回答的最后一个问题是什么。由于该用户没有回答任何问题,因此该列仍然是空的,您可以问他第一个问题。如果他回答,您现在可以更新值为 1 的列。下次同一用户访问带有问题的页面时,您再次查看数据库到同一列,您将获得值 1。所以现在您已经问第一个问题,你可以问用户下一个问题。

如果问题没有按特定顺序提出并且可以随机呈现,您还有其他可能的解决方案:创建参考表。您可以创建新表,其中将包含三列:user_id、question_id 和该问题的答案(如果您也需要保存答案)。现在,每次用户打开生成问题的页面时,您都可以查看带有问题的表格并选择用户未回答的所有问题。所以你做这样的事情:

SELECT * 
FROM questions_table 
WHERE question_id NOT IN 
(SELECT question_id 
FROM questions_answered_by_users 
WHERE user_id=$currentUserId)
于 2012-11-09T19:23:03.247 回答
0

一个永久的解决方案,我相信唯一的解决方案是某种数据库(mysql、xml、文件等)服务器端。另一种可能被欺骗的方法是使用 cookie,使用 json_encode 创建一个 json,使用该 json_encode 访问过哪些页面,并将它们保存在一个有效期为 30 天的 cookie 中。虽然这可以通过删除 cookie 或打开不同的浏览器来欺骗。

于 2012-11-09T19:25:33.700 回答