作者PTTLSboy (阿铯)
看板PHP
标题[请益] SQL字串中的变数处理,该怎麽做最好
时间Sat Oct 13 17:00:35 2012
当我要执行SQL语法时,会用一个函数将POST进来的变数给包起来
函数长这样:
function GetSQLValueString($theValue, $theType){
$theValue=_addslashes($theValue); //会判断magic_quotes_gpc再决定使用
//addslashes()
switch ($theType) {
case "text": //字串
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long"://常整数
case "int": //整数
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double": //俘点数
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
}
return $theValue;
}
所以出来的变数会将单引号(')、双引号(")前面多加一个反斜线
但是後来GOOGLE才发现它也有漏洞似乎是中文编码问题,单引号问题并没有解决
请问这个函数该怎麽去补救?
先说感谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.0.232.61
1F:推 showsky:可以使用 PDO 或者 mysqli 提供的 func 10/14 02:25
3F:→ guardlan:mysql_real_escape_string 10/14 15:22
4F:→ MOONRAKER:好好的prepared statement不用偏自己硬干出差不多的东东 10/14 22:07
因为本来的程式不是用pdo写
现在转pdo是个大工程..真没办法的话只好改了
※ 编辑: PTTLSboy 来自: 123.0.232.61 (10/15 18:07)
5F:→ MOONRAKER:OUCH :( 10/15 22:57
6F:推 Bambe:还蛮想问这段code是哪里的范例吗 lol... 怎麽好像看到也有客 10/16 01:16
7F:→ Bambe:户的程式码有看到类似的 lol 10/16 01:17
这段最原本是dreamweaver产生出来的,会把斜线给去除
加斜线那行是後来补上去的
※ 编辑: PTTLSboy 来自: 220.128.117.43 (10/16 09:00)