方法一,過濾一些沒用的內容
過濾沒用的資訊比較嚴格,有用的可能也輸入不進去,可以從網上找找其他的過濾方法:
代碼如下 |
複製代碼 |
function checkHtml($data){ $ret = preg_match("/['.,:;*?~`!@#$%^&+=)(<>{}]|]|[|/|\|"||/",$data); if ($ret == 1) { return false; exit; } else { return true; } } |
例2 過濾一些html標籤了
代碼如下 |
複製代碼 |
function uh($str) { $farr = array( "/s+/", //過濾多餘的空白 "/<(/?)(scripti?framestylehtmlbodytitlelinkmeta?%)([^>]*?)>/isU", //過濾 <script 等可能引入惡意內容或惡意改變顯示布局的代碼,如果不需要插入flash等,還可以加入<object的過濾 "/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU", //過濾javascript的on事件 ); $tarr = array( " ", "<\1\2\3>", //如果要直接清除不安全的標籤,這裡可以留空 "\1\2", ); $str = preg_replace( $farr,$tarr,$str); return $str; }
|
方法三,上面兩種方法都是把要過濾內容放在了程式中,下面我把要過濾的內容放到一個txt文本只,第次只要讀檔案內容進行判斷即可,這樣方便維護要過濾的內容。
代碼如下 |
複製代碼 |
<?php if($_POST) { //擷取檔案內容轉為數組兩種方法: /* $fcon = file_get_contents("./filter.txt"); $filter_word = explode("n",$fcon); */ $filter_word = file("./filter.txt"); //$filter_word = array("test1","test2","test3","test4"); $str = $_POST["mess"]; for($i=0;$i<count($filter_word);$i++) { if(preg_match("/".(trim($filter_word[$i]))."/i",$str)) { echo "<script>alert('您輸入的內容含非法內容,請重輸!');</script>"; echo "<a href='index.php'>返回</a>"; exit; } } echo "您輸入的內容是:".$str; } ?> <h2>測試過濾是否生效:</h2> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <p><textarea name="mess" cols="40" rows="4"></textarea></p> <p><input type="submit" name="sub" value="send"></p> </form> |