2013-06-24 84 views
1

我在php中是begginer,我需要您的帮助解决以下问题。比方说,我有两个页面 - index.php(用户需要做某些操作)和redeem.php(他生成的代码)。现在,这里是它如何工作:(?每24小时访问一次网站

  • 用户可以做任务每天只有一次,如果任务已经完成,那么正确的消息显示了
  • 后完成任务获得访问redeem.php(✔ - 完成)
  • redeem.php应该有一定的保障,如果用户没有投票(✔ - 完成)

现在..我不知道如何解决的第一个点。我可以基于cookie做到这一点,但一些'聪明'的用户可以简单地删除它们:/所以这是毫无意义的。我想最好的方法是使用mysql,但我完全不知道如何获取完成任务的时间,然后使用它,具体取决于用户是否今天完成了自己的任务。好的,我希望你能理解这一切,并期待你们提供一些很好的建议谢谢! ;-)

+0

你想添加一些代码的问题? – andrewsi

+1

你以用户的身份定义了什么?一个IP地址?匿名浏览器会话?注册用户帐户?将操作时间存储在数据库中,然后比较它,将其转换为时间戳并与'time()'进行比较。条件将会像'if(($ lastAction + 24 * 60 * 60) MrCode

+0

mysql,你需要在发布之前做一些google。 – ccd580ac6753941c6f84fe2e19f229

回答

1

我会创建一个voting_records表,其中user_id列和vote_datetime列。要创建一个新的纪录:

INSERT INTO `voting_records` (user_id, vote_datetime) VALUES (123, NOW()); 

要检查,如果用户已经在过去的24小时投票:

SELECT (DATEDIFF(NOW(), max(vote_datetime)) < 24*60*60) AS already_voted FROM voting_records WHERE user_id = 123 
1

相反,你只需要保存的时候这个特殊的行动将是日期的饼干可用。 所以,你可以这样做

$expireTime = strtotime("+1 day"); 

随着到期时间,你可以简单地检查当前的时间是重大或等于到期日期:

if (time() >= $expireTime) { 
    echo "Hey, you already voted!"; 
} else { 
    header("Location: /redeem.php"); 
    exit; 
} 

很显然,我不能没有有更具体一段代码开始。