<?php
include("conn.php");
$ip=$_SERVER['REMOTE_ADDR'];
$result=mysql_query("select * from ip  ",$conn )or die(mysql_error());
$row=mysql_fetch_assoc($result);
if($ip==$row['iip']){echo "shibei>";}else{
mysql_query("insert into ip(id,iip) values(null,'$ip')",$conn)or die(mysql_error());
}
 ?> 
这个可以限制ip,但还是感觉不好,没有想要的那种效果,感觉有缺陷,http://www.csdn.net?id=10000这样进来的一个用户判断他是否是有效的,我用上面的这个ip限制作为是否是有限连接感觉有缺陷,所以拿出来讨论一下。怎样改进,本人是学习,希望各位大侠能提出你们的宝贵意见
$ip=$_SERVER['REMOTE_ADDR'];
$result=mysql_query("select ip from ip;",$conn)or die(mysql_error());
$arr=array();
if(mysql_affected_rows() > 0){
  while($rows = fetch_array_assoc()){
    array_push($arr,$rows);
  }
}
foreach($arr as $arrIp){
  foreach($arrIp as $addr){
      if($ip == $arrIp)
        echo "已存在";
      else
        echo "此ip为新地址";
  }
}
这个是昨天一位哥哥改进了,大家还有什么好的意见吗?想学到更多,谢谢啦。分享一下哦

解决方案 »

  1.   

    $result=mysql_query("select iip from ip;",$conn)or die(mysql_error());
    $arr=array();while($rows = fetch_array_assoc()){
        $arr[]=$rows['iip'];
    }if(!in_array($ip,$arr)){
          mysql_query("insert into ip(id,iip) values(null,'$ip')",$conn)or die(mysql_error());  
    }
      

  2.   

    不好意思。写错了:
    while($rows = mysql_fetch_assoc($result)){
      $arr[]=$rows['iip'];
    }
      

  3.   

    这里也写错了,foreach($arr as $arrIp){
      foreach($arrIp as $addr){
      if($ip == $arrIp)
      echo "已存在";
      else
      echo "此ip为新地址";
      }
    }改一下:
    foreach($arr as $arrIp){
      foreach($arrIp as $addr){
      if($ip == $addr)
      echo "已存在";
      else
      echo "此ip为新地址";
      }
    }
      

  4.   

    $ip = $_SERVER['REMOTE_ADDR'];
    $result = mysql_query("select * from ip where iip='$ip'",$conn ) or die(mysql_error());if(mysql_num_rows($result))
      echo "shibei>";
    }else{
      echo "此ip为新地址";
    }
      

  5.   

    我现在又有一个新的想法,我能不能控制一下,每一个从哪个连接点击进来的,能有效两次,比如投票或者加积分 一个ip我可以使用两次可以加积分或者投两次票,这样可以用ip控制吗?
      

  6.   

    2次内有效,需要你在数据库里多加一个次数click_count字段,投票程序里添加用户每投票一次,click_count次数累加1,然后在投票的时候判断click_count的数值是否大于2,其他就不说了,你懂的。