本帖最后由 wkzb008 于 2011-03-01 17:34:07 编辑

解决方案 »

  1.   

    if($tid==$id)
    {
          echo “正确”
    }应该放到循环里面才对吧
      

  2.   

    为什么不把id=$id写到sql的where中呀,这样就不用循环判断
      

  3.   

    他说的是 
     if($tid==$id)
    {
      echo “正确”
    }应该在while循环中
      

  4.   


    $id=addslashes($_POST["id"]);(//这里取用户输入的id,add函数是过滤非法注入)mysql_select_db($dbname);(//下面读数据库库的id
            $rs = mysql_query($sql);
            while($row = mysql_fetch_object($rs)) 
            {
                $tid=$row->id;if($tid==$id)
            {echo “正确”
      }
    }  这样试试
      

  5.   

    隐隐约约有点明白了。但是if不好进去while  得加个什么过滤。。才好。。
      

  6.   

    $sql 是 什么 这个很关键一般来说是:select id from talbe where id='{$id}'
      

  7.   

    回楼上 $sql="select * from ".$BIAOTOU."tradelist where Id=".$id."
      

  8.   

    这一句sql 如果用户的用户名用“ 1 || 1=1”或者“1 or 1=1”就能轻而易举执行到 echo 所以那句sql应该改成$sql="select * from ".$BIAOTOU."tradelist where Id='{$id}'"
      

  9.   

    在 “ $rs = mysql_query($sql);”一句前面加一句
    echo $sql;
    然后在用'1 or 1=1 '测试,
    看看sql的输出是不是:
    select * from aaatradelist where Id=1 or 1=1
    这样的结果,能不往下执行吗把sql改成我的那种写法
    再看看结果是不是
    select * from aaatradelist where Id='1 or 1=1'
    这样1 or 1=1就成了字符串
      

  10.   

    $id=addslashes($_POST["id"]);  这个函数不起作用吗。。
      

  11.   

    楼上有qq没??我qq:509687121加我下。帮人帮到底。多谢了。。
      

  12.   

    addslashes给字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 
    这是addslashes函数的作用。但是它不能把 1 or 1=1 怎么样啊。当然了除了我那个方法,你也可以用strvar()函数,把$id转换成字符型,这样也能避免注射。
    $id = strvar($id);