在Sanitizing Get上获得错误

时间:2013-10-05 02:01:28

标签: php

我想只允许[^a-zA-Z@_.0-9\']接受更多功能,所以我这样做了。它工作正常,但当我试图插入anything.php

它开始找到文件名并以错误结束。我已经逃脱了不需要的char,但它仍然是错误的!

  

我无法逃避点(。)因为许多用户正在使用它

   $clean = htmlspecialchars(escapeshellcmd(($_GET["name"]),ENT_QUOTES);

    if ( !preg_match( '/[^a-zA-Z@_.0-9\']/', $clean))
     { 
     if(empty($clean)){

    echo "";

    }else{

//function

    }
}

1 个答案:

答案 0 :(得分:0)

您只是询问字符串是否包含其中任何一个字符。您的意思是,字符串完全这些字符组成。你需要锚定正则表达式的两端,并添加一个量词:

/^[^a-zA-Z@_.0-9\']*$/

^匹配lin的开头,$匹配行的结尾,*表示“0或更多”。