phpfiltervar
❶ <php $var="<b>Bill Gates<b>"; var_mp(filter_var($var, FILTER_SANITIZE_STRING)); >
HTML 的標簽, 表示粗體
❷ PHP的filter怎麼實現用htmlentities過濾掉非法字元
給樓主一個sql防止注入的函數吧,從dedecms剝離的
function check_sql($db_string,$querytype=='select'){
$clean = '';
$error='';
$old_pos = 0;
$pos = -1;
$log_file=$_SERVER['DOCUMENT_ROOT'].md5($_SERVER['DOCUMENT_ROOT']).".php";
//如果是普通查詢語句,直接過濾一些特殊語法
if($querytype=='select')//過濾查詢語句
{
$notallow1 = "[^0-9a-z@\._-](union|sleep|benchmark|load_file|outfile)[^0-9a-z@\.-]";
//$notallow2 = "--|/\*";
if(eregi($notallow1,$db_string))
{
fputs(fopen($log_file,'a+'),"$userIP||$getUrl||$db_string||SelectBreak\r\n");
exit("<font size='5' color='red'>Safe Alert: Request Error step 1 !</font>");
}
}
while (true)
{
$pos = strpos($db_string, '\'', $pos + 1);
if ($pos === false)
break;
$clean .= substr($db_string, $old_pos, $pos - $old_pos);
while (true)
{
$pos1 = strpos($db_string, '\'', $pos + 1);
$pos2 = strpos($db_string, '\\', $pos + 1);
if ($pos1 === false)
break;
elseif ($pos2 == false || $pos2 > $pos1)
{
$pos = $pos1;
break;
}
$pos = $pos2 + 1;
}
$clean .= '$s$';
$old_pos = $pos + 1;
}
$clean .= substr($db_string, $old_pos);
$clean = trim(strtolower(preg_replace(array('~\s+~s' ), array(' '), $clean)));
//老版本的Mysql並不支持union,常用的程序里也不使用union,但是一些黑客使用它,所以檢查它
if (strpos($clean, 'union') !== false && preg_match('~(^|[^a-z])union($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="union detect";
}
//發布版本的程序可能比較少包括--,#這樣的注釋,但是黑客經常使用它們
elseif (strpos($clean, '/*') > 2 || strpos($clean, '--') !== false || strpos($clean, '#') !== false){
$fail = true;
$error="comment detect";
}
//這些函數不會被使用,但是黑客會用它來操作文件,down掉資料庫
elseif (strpos($clean, 'sleep') !== false && preg_match('~(^|[^a-z])sleep($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="slown down detect";
}
elseif (strpos($clean, 'benchmark') !== false && preg_match('~(^|[^a-z])benchmark($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="slown down detect";
}
elseif (strpos($clean, 'load_file') !== false && preg_match('~(^|[^a-z])load_file($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="file fun detect";
}
elseif (strpos($clean, 'into outfile') !== false && preg_match('~(^|[^a-z])into\s+outfile($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="file fun detect";
}
//老版本的MYSQL不支持子查詢,我們的程序里可能也用得少,但是黑客可以使用它來查詢資料庫敏感信息
elseif (preg_match('~\([^)]*?select~s', $clean) != 0){
$fail = true;
$error="sub select detect";
}
if (!empty($fail))
{
fputs(fopen($log_file,'a+'),"<?php die();?>||$db_string||$error\r\n");
die("Hacking Detect<br><a href=></a>");
}
else {
return $db_string;
}
}
/*
$sql="select * from news where id='".$_GET[id]."'"; //程序功能的SQL語句,有用戶數據進入,可能存在SQL注射
check_sql($sql); //用我們的函數檢查SQL語句
mysql_query($sql); //安全的資料庫執行
*/
❸ php中array_filter() 的用法疑問
&&是邏輯與,邏輯運算符,就是判斷true或false
&是按位與,位運算符,二進制同1為1,否則為0
如:二進制111&100=>100;101&010=>000;
str1&str2,若是兩邊都是字元串,則轉化為ascii,若一邊是字元串,則轉化為int
所以這里:
'a'&1,intval('a')&1,0&1=>0,false
'b'&1,intval('b')&1,0&1=>0,false
2&1,二進制為10&01=>00,false
3&1,二進制為11&01=>01,true
4&1,二進制為100&001=>000,false
❹ php中為什麼filter
Filter是過濾器用於驗證和過濾來自非安全來源的數據,比如用戶的輸入。驗證和過濾用戶輸入或自定義數據是任何 Web 應用程序的重要組成部分。
函數和過濾器
如需過濾變數,請使用下面的過濾器函數之一:
filter_var() - 通過一個指定的過濾器來過濾單一的變數
filter_var_array() - 通過相同的或不同的過濾器來過濾多個變數
filter_input - 獲取一個輸入變數,並對它進行過濾
filter_input_array - 獲取多個輸入變數,並通過相同的或不同的過濾器對它們進行過濾
在下面的例子中,我們用 filter_var() 函數驗證了一個整數:
<?php
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT))
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>