还有另一种验证$ _POST数据的方法吗?

时间:2011-11-18 14:20:19

标签: php

通常我使用trim() PHP函数来检查数据是否为空。同样对于MySQL我使用mysql_real_escape_string()。这样就够了,还是需要进行额外的检查?

4 个答案:

答案 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()为你做这个!非常值得转换。