通常我使用trim()
PHP函数来检查数据是否为空。同样对于MySQL我使用mysql_real_escape_string()
。这样就够了,还是需要进行额外的检查?
答案 0 :(得分:3)
要检查数据是否为“空”,您可以使用empty()。
是的,要转义数据,请使用mysql_real_escape_string()
来表示MySQL。默认情况下,如果在没有其他参数的情况下使用,trim()
用于修剪尾随和前导空格。
是否很难检查每个功能的功能?
答案 1 :(得分:1)
我通常这样做:
$foo = isset($_POST['bar']) ? trim($_POST['bar']) : '';
if (!empty($foo))
$db->query("UPDATE table SET foo = '".mysql_real_escape_string($foo)."'");
答案 2 :(得分:0)
if (!empty($_POST['data']) && other controls) {
// Success
$data = mysql_real_escape_string($data)
$sql = "SELECT * FROM users WHERE data = '$data'";
mysql_query($sql);
}
答案 3 :(得分:0)
我倾向于使用isset($ _ POST ['key1'],$ _POST ['key2'],$ _POST ['keyn'])作为确定表单是否已提交所有必需数据的起点,测试诸如$ _SERVER ['REQUEST_METHOD'],$ _SERVER ['SERVER_PORT'],$ _SERVER ['REQUEST_URI']之类的东西。修剪是无害的,但我只是使用preg_match($ needle,$ haystackenter)进行颈静脉,并使正则表达式非贪婪和非缓冲区捕获。简而言之,为什么条件输入只能使测试失败?
语言构造empty()有效,但是如果值与您要查找的模式不匹配真的很重要吗?至于表现,谁可以说是否有人复制并粘贴了牛津英语词典,在任何一种情况下都会发生什么。
function ValidatePostKeyAndValue($input, $pattern, $length)
{
if(isset($input) &&
preg_match($pattern, $input) &&
ctype_print($input) &&
strlen($input) <= $length &&
is_string($input))
{
return true;
}
else
{
return false;
}
}
根据具体情况,我可以或多或少地做。布尔函数是你的朋友。
就你的$ data变量而言,我认为考虑通配符_和%是否可能出现在你的数据中是明智的。如果是这样,addcslashes()可用于定位字符串中的这些字符。尽管如此,迁移到mysqli()将使您不必使用mysql_select_db()。 mysqli_connect()为你做这个!非常值得转换。