如果已访问过页面,则重定向

时间:2012-11-09 18:57:28

标签: php javascript

我想我被困了,我真的希望有人可以帮助我。在这里 所以,我正在尝试使用PHP和JS制作类似测验的应用程序。这个想法是给用户提供了4个可能答案的图片,他必须猜测该图片中的内容。用户根据他点击的答案收到x分,并被重定向到下一页,包括图片和答案,依此类推。用户还有机会跳到下一页。不过这是件事:

如何检查用户是否已经回答了特定问题,如果已经回答了这个问题,我可以将他重定向到下一页?基本上,它可以保护免受作弊,因此用户无法从同一问题中获得越来越多的分数。

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可能需要使用MySQL db,因此它是一个永久的解决方案,但您不需要为每个页面创建新列。 你可以只有一列和行数据作为一个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

答案 2 :(得分: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)

答案 3 :(得分:0)

一个永久的解决方案,我相信唯一的一个是服务器端的某种数据库(mysql,xml,file等)。 另一种可以被欺骗的方法是使用json_encode创建一个带有json_encode的json,并将其保存在有效期为30天的cookie中。虽然这可以通过删除cookie或打开其他浏览器来欺骗。