❶ 誰能給我這一個php防sql注入的函數啊,功能越強大越好
functioninject_check($Sql_Str){//自動過濾Sql的注入語句。
$check=preg_match('/select|insert|update|delete|'|\*|*|../|./|union|into|load_file|outfile/i',$Sql_Str);
if($check){
echo'<scriptlanguage="JavaScript">alert("系統警告: 請不要嘗試在參數中包含非法字元嘗試注入!");</script>';
exit();
}else{
return$Sql_Str;
}
}
我這個是自己寫的,通過正則判斷是否含有危險關鍵字,希望採納。
❷ PHP提交自動過濾掉input框內的指定字元,怎麼寫呢
tr_replace() 函數使用一個字元串替換字元串中的另一些字元。
語法
str_replace(find,replace,string,count)
參數
描述
find 必需。規定要查找的值。
replace 必需。規定替換 find 中的值的值。
string 必需。規定被搜索的字元串。
count 可選。一個變數,對替換數進行計數。
提示和注釋
注釋:該函數對大小寫敏感。請使用 str_ireplace() 執行對大小寫不敏感的搜索。
注釋:該函數是二進制安全的。
例子
例子 1
<?php
echo str_replace("world","John","Hello world!");
?>
輸出:
Hello John!
例子 2
在本例中,我們將演示帶有數組和 count 變數的 str_replace() 函數:
<?php
$arr = array("blue","red","green","yellow");
print_r(str_replace("red","pink",$arr,$i));
echo "Replacements: $i";
?>
輸出:
Array
(
[0] => blue
[1] => pink
[2] => green
[3] => yellow
)
Replacements: 1
例子 3
<?php
$find = array("Hello","world");
$replace = array("B");
$arr = array("Hello","world","!");
print_r(str_replace($find,$replace,$arr));
?>
輸出:
Array
(
[0] => B
[1] =>
[2] => !
)
❸ php如何過濾數組中的空元素使用那個函數
PHP中去除一個數組中的空元素方法很多,但是有一個系統函數是最方便的:
array array_filter ( array $array [, callable $callback )
此函數是依次將 「$array 」 數組中的每個值傳遞到 「$callback」 函數。如果 「$callback」函數返回 TRUE ,則 「$array」 數組的當前值會被包含在返回的結果數組中。數組的鍵名保留不變。
如果只需去除數組中的空元素的話,"$callback"可以省略,例如數組:
$arr1=array( "a" => 1 , "b" => 0 , "c" => 3 , "d" => "" , "e" => 5 ,"f"=>array());
//執行
$arr1=array_filter ($arr1);
//結果為
array( "a" => 1 , "c" => 3 , "e" => 5 );
❹ php中,通過$_GET 和 $_POST 取得的數據 安不安全 需要什麼過濾函數處理嗎
引號過濾有magic_quotes_gpc(伺服器配置)
函數addslashes() htmlspecialchars(,ENT_QUOTE);
注意伺服器上是否已經開啟magic_quotes_gpc
(php>=5.3 已經廢棄了它) 如果已經開啟,再進行轉義會導致雙層轉義。 另外addslashes() addcslashes() 都不能對數組進行處理,需要寫一個遞歸實現。
你可以使用函數get_magic_quotes_gpc()來檢測它是否已經開啟
不建議使用addslashes使用addslashes可能會因為資料庫編碼的問題使得單引號未被轉義了解詳情可訪問:http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string
❺ php自定義一個函數用來過濾表單的。。比如說filter($_POST);調用filter函數的時
function filter($array){
foreach($array as $k=>$v){
$array[$k]=htmlspecialchars(strip_tags($v));
$array[$k]=eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile',$array[$k];
}
}
❻ 大家都知道php有個函數htmlspecialchars 可以拿來防止X-S-S.
這個函數是過濾 ' "" 即 單引號 雙引號的
在入庫的時候如果不過濾 ' ""這樣的東西 php程序員應該能明白有多可怕
htmlspecialchars的作用是把:
& (和號) 成為 &
" (雙引號) 成為 "
' (單引號) 成為 '
< (小於) 成為 <
> (大於) 成為 >
輸出的時候不需要特殊處理 瀏覽器 會把這些標簽還原的
一般來說使用 mysql_escape_string() 處理sql語句就可以解決很多問題
不信可以嘗試一下
❼ 求php防止被sql 注入攻擊的過濾用戶輸入內容的函數
functionclean($v){
//判斷magic_quotes_gpc是否為打開
if(!get_magic_quotes_gpc()){
//進行magic_quotes_gpc沒有打開的情況對提交數據的過濾
$v=addslashes($v);
}
//把'_'過濾掉
$v=str_replace("_","\_",$v);
//把'%'過濾掉
$v=str_replace("%","\%",$v);
//把'*'過濾掉
$v=str_replace("*","*",$v);
//回車轉換
$v=nl2br($v);
//html標記轉換
$v=htmlspecialchars($v);
return$v;
}
如果需要,還可以屏蔽一下危險字元,例如insert, update, delete等
//將update去掉
$v=str_replace("update","",$v);
最後,在拼裝sql語句時,用戶輸入的東西,全括在單引號內
❽ php過濾指定字元的函數
explode — 使用一個字元串分割另一個字元串
array explode ( string $delimiter , string $string [, int $limit ] )
此函數返回由字元串組成的數組,每個元素都是 string 的一個子串,它們被字元串 delimiter 作為邊界點分割出來。
<?php
//示例1
$pizza="";
$pieces=explode("",$pizza);
echo$pieces[0];//piece1
echo$pieces[1];//piece2
//示例2
$data="foo:*:1023:1000::/home/foo:/bin/sh";
list($user,$pass,$uid,$gid,$gecos,$home,$shell)=explode(":",$data);
echo$user;//foo
echo$pass;//*
?>
❾ 請問用PHP如何過濾空格內置函數或者正則表達式都可以
你是頭尾空格嗎?
用trim函數
如果是其他位置用str_replace(" ","","$array");
str_replace(find,replace,string,count)
參數 描述
find 必需。規定要查找的值。
replace 必需。規定替換 find 中的值的值。
string 必需。規定被搜索的字元串。
count 可選。一個變數,對替換數進行計數。
❿ php的過濾代碼或者函數加在哪個地方
GetSQLValueString($_POST['lyr'], "text"),
GetSQLValueString($_POST['nr'], "text"),
GetSQLValueString($_POST['sh'], "int"),
GetSQLValueString($_POST['ip'], "text"));
哪個$_POST是內容就提前用函數過濾下