我有一个奇怪的问题:我想将网站访问者的IP地址保存到数据库。我要说访问者不是我(61.68.257.80是我的IP地址),然后将IP地址保存到数据库。当我通过隐藏我的代理检查它时工作正常。它保存了除了我的IP地址,但是当我从手机(带有电话互联网而不是WiFi)访问网站时,它有不同的IP地址,然后它不会存储到数据库中。任何人?
$visitor=$_SERVER['REMOTE_ADDR'];
if($visitor!=="61.68.257.80"){
$count="SELECT * FROM `visitor`";
$countRun=mysqli_query($conn,$count);
while($countRow=mysqli_fetch_array($countRun)){
$current_counts=$countRow['counts'];
$new_count=$current_counts+1;
}
$remote_ip= $_SERVER['REMOTE_ADDR'];
$queryUpdate="INSERT INTO `visitor`(`counts`,`ip_address`)VALUES('".$new_count."','".$remote_ip."')";
$runUpdate=mysqli_query($conn,$queryUpdate);
}
答案 0 :(得分:2)
一个改进代码的小建议,同时它也会更快,
你正在做的是获取整个表记录,并循环它并最终获得最后记录的计数,这可能是最大值。
所以不要这样:
$count="SELECT * FROM `visitor`";
$countRun=mysqli_query($conn,$count);
while($countRow=mysqli_fetch_array($countRun)){
$current_counts=$countRow['counts'];
$new_count=$current_counts+1;
}
您可以像下面一样修改您的查询:
$count = "select max(counts) as count_max_value from visitor";
以上查询将只返回一行/记录,您可以使用键count_max_value
来访问它。
征求意见:
使用了var_dump,它给了我“string(13)然后ip地址”而在 数据库其varchar(12)。
您可以使用以下查询(对于IPv4地址)修改您的表格
ALTER TABLE `visitor` MODIFY `ip_address` VARCHAR(15);