2011-11-05 75 views
-1

昨晚我发布了一个问题,但不幸的是,我没有足够详细的描述我发现自己的情况。我已经完成了一项家庭作业任务,我们要创建一个“评论”部分博客。但是,要让用户留下评论,他们必须输入验证码。我们的任务是使用cookie来跟踪登录尝试。PHP cookie和时间问题

我没有在我原来的qestion正确的解释是:

我们必须使用cookies。这是一个专门针对cookie实施的练习。这不是最佳实践,是脆弱的。我们的导师解释了为什么我们不应该在“真实世界”的情况下做到这一点,但他希望我们了解和展示cookies的使用。

昨天晚上我发布了一个问题,但不幸的是,我没有足够详细的描述我发现自己的情况。我已经完成了一项家庭作业任务,我们要为博客创建一个“评论”部分。但是,要让用户留下评论,他们必须输入验证码。我们的任务是使用cookie来跟踪登录尝试。

我没有在我原来的qestion正确的解释是:

我们必须使用cookies。这是一个专门针对cookie实施的练习。这不是最佳实践,是脆弱的。我们的导师解释了为什么我们不应该在“真实世界”的情况下做到这一点,但他希望我们了解和展示cookies的使用。

我们需要为用户提供尽可能多的机会,因为他们希望登录。但是,如果他们在30秒内尝试五次,他们会被锁定三分钟。

大多数人提到我应该使用会话,这是有道理的。但是,这是不允许的。

在高层次上,您只需存储时间戳而不是“计数”。然后在每次请求时,您可以扔掉超过30秒的时间戳并计算其余时间。

我们需要为用户提供尽可能多的机会,因为他们希望登录。但是,如果他们在30秒内尝试五次,他们会被锁定三分钟。

大多数人提到我应该使用会话,这是有道理的。但是,这是不允许的。一位用户提到,我所需要做的就是存储时间戳,而不是“计数”,然后丢弃超过30秒的时间戳,并计算剩余时间。这是有道理的,但你如何实现这个目标?

这是一个家庭作业问题,我当然不希望代码。我只是想澄清一下整个'饼干事情'。我应该将时间戳存储在数组中吗?如果是这样,你如何做到这一点?如果时间超过30秒,我该如何将它们从阵列中删除?

我觉得我有点缺乏一般的cookies的理解。任何澄清将不胜感激。我希望我一直在简洁,不浪费任何宝贵的时间。谢谢。

回答

1

我的建议是,如果你必须使用cookie,你可以简单地设置单独的饼干为标志的失败尝试用过期30秒的时间,而如果所有4失败的尝试标志时,他们再次失败,置另一标志cookie在3分钟后过期,并且在设置该标志时不允许任何尝试。

+0

对不起,新手跟进.....你需要每次分配一个新的cookie吗?和setcookie(“firstcookie”)一样,检查它是否被设置,如果是,setcookie(“secondcookie”)等,直到设置了四个? – mrwienerdog

+0

这可能是最简单的方法,这样每次尝试都有自己的超时时间。逻辑应该遵循如下内容:如果没有设置完整的锁定cookie并且尝试失败,请检查请求中的标志1,如果未设置它,如果已设置,则移动到标志2并重复检查/设置等上。 –

+0

我还没有足够的积分upvote,但谢谢。总体感觉。我想我被挂断了,因为我的教练说他只用了3个饼干。我从来没有想过这样。很棒! –