如果在过去24小时内使用时间(),PHP / MySQL检查ip()

时间:2013-01-30 07:21:05

标签: php mysqli ip

数据库:

pub_id pub_name time              ip
1      King     1359500087        3388636152
2      Queen    1359550082        6385394932
3      Jack     1359502084        5648646562
4      Heart    1359524083        9283834142
5      Jim      1359503082        3388636152
                |_ Using time()    |_ Using ip2long()

PHP / MySQLi代码:

$pub_id = $_GET['pub_id'];
$pub_name = $_GET['pub_name'];
$ip = ip2long($_SERVER['REMOTE_ADDR']);
$time = time();

$query = $db->query("SELECT * FROM impressions WHERE pub_id = '$pub_id' AND pub_name = '$pub_name' AND ip = '$ip' AND time >= '???'");
$ip_adderss = $query->num_rows;
$query->close();

if($ip_adderss == 0){
// Redirect
} else{
// Do nothing
}

现在使用time()和IP如何检查当前访客上次访问是否是24小时前?

一个简单的解决方案是使用if语句来检查ip时间和现在的时间。

// Check if the IP is new or returning
$query = $db->query("SELECT * FROM impressions WHERE pub_id = '$pub_id' AND pub_tag = '$pub_tag' AND month = '$month' AND day = '$day' AND ip = '$ip' AND domain = '$domain' AND valid = '1' ORDER BY id DESC");

$ip_address = $query->num_rows;

if($ip_address == 0){

    $ip_ok = 1;

} elseif($ip_address != 0){

    $impression = $query->fetch_assoc();

    if($time >= ($impression['time'] + 86400)){

        $ip_ok = 1;

    } else{

        $ip_ok = 0;

    }

} else{

$ip_ok = 0;

}

1 个答案:

答案 0 :(得分:0)

您的time字段包含unix时间戳,这只是一个秒数 因此,计算一天前的点很容易 - 只需从当前时间戳中减去86400。 所以,你的情况将像小学数学一样简单:

WHERE time >= unix_timestamp() - 86400

或者,如果你想使用time() PHP函数

$time  = time() - 86400;
$query = "SELECT * FROM impressions WHERE ... AND time >= ?");

然后绑定该值。