【发布时间】:2012-12-18 19:22:19
【问题描述】:
我正在尝试将列表中的 IP 地址与阻止的 IP 列表进行比较。如果 IP 地址等于 $blockedIP 数组中的地址,则该行不包含在列表中。该列表由 mysqli_query 填充。如果 IP 地址与数组中的一个匹配,我想做的是排除整行。
echo '<div class="genericTable"><h2>Downloaded Sermons Report</h2><table>';
$blockedIP = array('69.58.178.58', '173.199.115.123', '173.199.120.99');
foreach($blockedIP as $ip){
$sql = mysqli_query($db, "SELECT * FROM dl_log WHERE ipaddress <> '".$ip."'");
while($row = mysqli_fetch_assoc($sql)){
echo '<tr>';
if($row['ipaddress'] !== $ip){
foreach($row as $each){
echo '<td class="genericTable">'.$each.'</td>';
}
}
echo '</tr>';
}
}
echo '</table></div>';
我已经用几种不同的方式尝试了该脚本,要么获取整个列表,要么将每一行和每一列与数组进行比较,这使得表格看起来很翘。我正在使用 foreach 将值与数组进行比较。我应该把它放在哪里? 谢谢。
【问题讨论】:
-
你知道屏蔽IP是没有意义的吧? IP != 用户。一个 IP 可能有数百万人,一个人可以为每个请求使用一个新 IP。
-
好吧,如果您想避免出现一行,只需在打印该行之前进行检查...
-
Dagon,我并没有阻止 IP 访问,只是阻止其出现在列表中。整个脚本分析已下载文件的用户的 IP、下载时间等。被阻止的 IP 似乎是搜索引擎机器人。我不想用不必要的数据使表格膨胀。