phpsql語句過濾
㈠ php sql 過濾重復
只需要在襲給sql語句中加個DISTINCT , sql 語句distinct的用法為SELECT DISTINCT 列名稱 FROM 表名稱 ,即 $sql="select distinct CD_Singer from ".tname('dj')."";
㈡ 求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+MYSQL條件篩選
條件在變數$a、$v中,組織查詢語句$sql,查詢的結果再輸出即可,例子代碼關鍵部分:
<?php
$a=$_GET['attr']||'a';
$v=$_GET['value']||'你';
if(mysql_connect('127.0.0.1','root','123456')){
$sql="SELECTidFROM`tab`WHERE`attr`='$a'AND`value`='$v'";
if($res=mysql_query($sql)){
$row=[];
while(list($id)=mysql_fetch_array($res))$row[]=$id;
mysql_free_result($res);
mysql_close();
echo'查詢結果:'.implode($row,'<br>');
}elseecho"執行SQL:$sql<br>失敗:".mysql_error();
}elseecho'MYSQL連接失敗:".mysql_error();
?>
㈣ php怎樣過濾非法字元防止sql注入
htmlspecialchars($_POST['欄位']),用這個函數就可以將一些特殊字元進行過濾轉義。你可以去看看這個函數的說明。
㈤ PHP+MYSQL篩選數據的一段代碼寫法,在線等!!
$link=mysql_connect("localhost","mysql_user","mysql_pwd")ordie("連接失敗");
mysql_select_db("db",$link);
mysql_query('SETNAMESutf8');
$sql="select*fromtablenamewhereisent+irecv>maxll";
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{
}
mysql_close($link);
㈥ [php]防sql語句注入函數,怎麼使用
在你的代碼里
$sql = ....
if (!inject_chk($sql))
{
//執行...
}
else
{
echo "有注入危險";
}
㈦ PHP如何防SQL注入,過濾,驗證和轉義
首先代碼的嚴謹。其次安全狗。雲鎖。可以了解下
㈧ 如:$id=xxxx php中關於ID如何嚴格過濾才進入SQL查詢啊用intval還是(int)還是其它要代碼啊
// intval 會將抄非int型的值轉為0, 將 332abc 這樣的字元串轉為332
$id = intval($_GET['id']);
if($id>0){
$sql = 'select * from user where id='.$id;
//或者
$sql = "select * from user where id=$id";
//注意 單引號和雙引號的區別
mysql_query($sql,$conn);
}
㈨ php過濾sql注入,新手
我在PHP4環境下寫了一個防SQL注入的代碼,經過實際使用在PHP5下也兼容,歡迎大家使用修改,使用。
代碼如下:
<?php
/*
sqlin 防注入類
*/
class sqlin
{
//dowith_sql($value)
function dowith_sql($str)
{
$str = str_replace("and","",$str);
$str = str_replace("execute","",$str);
$str = str_replace("update","",$str);
$str = str_replace("count","",$str);
$str = str_replace("chr","",$str);
$str = str_replace("mid","",$str);
$str = str_replace("master","",$str);
$str = str_replace("truncate","",$str);
$str = str_replace("char","",$str);
$str = str_replace("declare","",$str);
$str = str_replace("select","",$str);
$str = str_replace("create","",$str);
$str = str_replace("delete","",$str);
$str = str_replace("insert","",$str);
$str = str_replace("'","",$str);
$str = str_replace(""","",$str);
$str = str_replace(" ","",$str);
$str = str_replace("or","",$str);
$str = str_replace("=","",$str);
$str = str_replace("%20","",$str);
//echo $str;
return $str;
}
//aticle()防SQL注入函數
function sqlin()
{
foreach ($_GET as $key=>$value)
{
$_GET[$key]=$this->dowith_sql($value);
}
foreach ($_POST as $key=>$value)
{
$_POST[$key]=$this->dowith_sql($value);
}
}
}
$dbsql=new sqlin();
?>
===================================================================================
使用方式:
將以上代碼復制新建一個sqlin.php的文件,然後包含在有GET或者POST數據接收的頁面
原理:
將所有的SQL關鍵字替換為空.
㈩ php的sql過濾出現錯誤。
錯誤提示的意思是sqlin類名定義重復
可能是文件包含重復了。檢查一下包含這個文件的代碼