我创建了注册页面,当用户单击“提交”按钮时,会向其电子邮件发送激活链接,因此时间戳存储在数据库中。如果用户单击该激活链接,我必须检查在24小时之前或之后是否单击了该链接。 我的代码: -
function confirmEmail($activation_code){
$this->load->database();
$this->load->helper('date');
echo "activation link will be checked and accordingly flag will be set.";
$activation_sent_timestamp=$this->db->query("SELECT activation_timestamp FROM tbl_user_registration WHERE email_verification_code='$activation_code'");
foreach($activation_sent_timestamp->result() as $res){
$activation_time_from_db=$res->activation_timestamp;
}
echo $activation_time_from_db."\n\r";
$now = time();
$human = unix_to_human($now);
echo $human;
$difference = ($human-$activation_time_from_db);
if($difference < 24) {
echo "correct"
}
else echo "Link expired";
}
我正在使用codeigniter。我怎么能这样做,这段代码没有显示任何错误,但我不知道这是24小时计算的正确方法,我正在检查但没有得到任何东西。请检查代码。
已解决........:)
答案 0 :(得分:1)
unix_to_human()只返回一个人类可读的时间戳形式
最简单的方法是,找出两个时间戳之间的差异,转换为小时并检查它是否小于24小时
答案 1 :(得分:0)
您可能想要使用date_diff
见这里:DATE_DIFF()
答案 2 :(得分:0)
您可以使用差异计算差异,也可以更改时间格式
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
答案 3 :(得分:0)
将两个时间戳转换为php date('Y-m-d')格式,然后尝试 date_diff
答案 4 :(得分:0)
您可以在查询中使用mysql timediff函数 看看你的情况你可以这样做,因为我在这篇文章中已经回答了
答案 5 :(得分:0)
$time = time();
$seconds = 86400 // seconds of 24 Hours
SELECT * FROM tbl_user_registration WHERE ( $time - UNIX_TIMESTAMP( activation_timestamp ) >= $seconds )