0

我创建了注册页面,当用户单击提交按钮时,激活链接将发送到他的电子邮件,因此时间戳存储在数据库中。如果用户单击该激活链接,我必须检查该链接是在 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";
    }

我正在使用代码点火器。我该怎么做,这段代码没有显示任何错误,但我不知道这是计算 24 小时的正确方法,我正在检查但没有得到任何东西。请检查代码。

解决了........ :)

4

6 回答 6

1

unix_to_human()只返回人类可读形式的时间戳

最简单的方法是,找出两个时间戳之间的差异,转换为 hrs 并检查是否小于 24hrs

于 2012-07-04T08:50:07.593 回答
0

您可能想使用date_diff

见这里:DATE_DIFF()

于 2012-07-04T08:47:31.553 回答
0

您可以使用 diff 计算差异,也可以更改时间格式

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
于 2012-07-04T08:49:41.130 回答
0

将两个时间戳转换为 php date('Ymd')格式,然后尝试date_diff

于 2012-07-04T08:49:52.283 回答
0

您可以在查询中使用 mysql timediff 函数。
看看你的情况,你可以这样做,正如我在这篇文章中回答的那样

在 mysql 和 php 中寻找空闲时间块?

于 2012-07-04T09:08:45.787 回答
0
$time = time();

$seconds = 86400 // seconds of 24 Hours

SELECT * FROM tbl_user_registration WHERE ( $time - UNIX_TIMESTAMP( activation_timestamp ) >= $seconds )
于 2012-07-04T09:10:34.900 回答