【发布时间】:2015-08-10 05:19:37
【问题描述】:
我想创建一个系统,如果用户多次点击任何广告,广告将被隐藏。当他们访问我的站点时,它会检查他们的 ip 是否在数据库中,如果没有,则将存储他们的 ip。接下来,它会检查他们到目前为止的点击次数,如果超过 1 个广告将被隐藏。这是我现在正在努力的部分。我已经在下面的代码中注释掉了我想要发生的事情。此外,我的表中有 4 列:id、ip、计数(点击次数)和日期时间。我正在使用 mysqli,我只想知道如何根据用户的 ip 检索用户的点击次数。以下是 Stats 表的示例: id: 1 ip: xx.xx.xx.xx count: 0 creation: datetime
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
$query = "SELECT count(*) FROM Stats WHERE ip = '$ip'";
$result = $db->query($query);
if($result->num_rows > 0)
{
//if user's click count > 1
hide ads
else
display ads
}
else {
$insert = $db->prepare("INSERT INTO Stats(ip, created) VALUES (?, NOW())");
$insert->bind_param('s', $ip);
$insert->execute();
$insert->close();
}
【问题讨论】:
-
不知道能不能加Http_x_forwarded_for...
-
您不只选择名为
count.. 的列吗?因为count(*)是返回的行数...不是用户点击的实际次数... -
@Darren 好吧,我使用 count(*) 只是为了检查用户的 ip 是否是新的,如果是新的,我会将其添加到数据库中。我想检查该特定用户的计数,如果计数超过 1,则隐藏广告
-
请用表
Stats的原始数据更新您的问题