我已设置此代码,但它似乎无法正常工作。基本上我在数据库中放了一个时间戳,每当有人试图提交一些东西时,我会检查他们的IP,然后他们最后一次提交时间戳基本上我需要确保它在发布前30分钟已经超过了。这是我迄今为止的代码......
$ip = $_SERVER["REMOTE_ADDR"];
$chkquery = "SELECT * FROM faucet where ip='$ip' ORDER BY timestamp DESC LIMIT 1;";
$chk = mysql_query($chkquery) or die($chkquery."<br/><br/>".mysql_error());
while($row = mysql_fetch_array($chk, MYSQL_ASSOC)){
$timestamp = $row['timestamp'];
}
$timenow = time();
$chktime = strtotime($timestamp);
if($chktime <= ($timenow - 1800)) {
echo "Yay! It has been 30 minutes!";
} else {
echo "Wait! Its not been 30 minutes";
}
我需要更改/修复才能使其正常工作吗?非常感谢您的帮助! if语句可能会被颠倒,但是IDK,我最终还是Yay!无论什么时候......
答案 0 :(得分:2)
依赖于strtotime()
是不安全的,因为它是由系统的时区设置定义的。
您应该调整date.timezone setting
或使用date_default_timezone_set()
例如:
date_default_timezone_set('America/New_York');
...
if($timenow - $chktime >= 1800) {
echo "Yay! It has been 30 minutes!";
} else {
echo "Wait! Its not been 30 minutes";
}
编辑:添加剩余时间
$time_diff = $timenow - $chktime;
if( $time_diff >= 1800) {
echo "Yay! It has been 30 minutes!";
} else {
$remaining = (1800 - $time_diff );
echo "Wait! Its not been 30 minutes\n";
echo "please come back in ".date ( "i:s" , $remaining)." minutes";
}
答案 1 :(得分:0)
请检查您的数据库时区和php时区设置。
你在数据库和php上的时区可能不同。
在php脚本上,您可以使用date_default_timezone_set()
设置时区,date_default_timezone_get()
来检查设置的时区
在mysql上,查看my.ini
或my.cnf
了解设置