unset($_ENV,$HTTP_ENV_VARS,$_REQUEST,$HTTP_POST_VARS,$HTTP_GET_VARS,$HTTP_POST_FILES,$HTTP_COOKIE_VARS);
if(!get_magic_quotes_gpc()){
Add_S($_POST);
Add_S($_GET);
Add_S($_COOKIE);

解决方案 »

  1.   

    unset() 是删除这些变量,释放内存
    if(!get_magic_quotes_gpc()) 意思是 如果系统没有开get_magic_quotes_gpc函数权限即get_magic_quotes_gpc=off那么就 对所有$_POST 和 $_GET 和 $_COOKIE 的值的特殊符号加上反斜杠“\”
    这个特殊符号是这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 
      

  2.   


    unset($_ENV,$HTTP_ENV_VARS,$_REQUEST,$HTTP_POST_VARS,$HTTP_GET_VARS,$HTTP_POST_FILES,$HTTP_COOKIE_VARS);  //销毁变量,主要是出于安全考虑
    if(!get_magic_quotes_gpc()){  //去得magic_quotes_gpc的值,判读是否开启自动加反斜杆
    Add_S($_POST); //Add_S应该是自定函数,从这判断其作用应该是加反斜杆
    Add_S($_GET);
    Add_S($_COOKIE);
      

  3.   

    $sql = "select * from table where id='.$id.'"如果用户用 1' or ' 1=1登录的话sql  就变成了:select * from table where id='1'or '1=1' 
    自然就突破了你下面的判断。
    用了上面的过滤后就这样了:
    select * from table where id='1\'or \'1=1'  单引号转义了,