【问题标题】:Sanitize input with FILTER_SANITIZE_STRING使用 FILTER_SANITIZE_STRING 清理输入
【发布时间】:2012-06-09 16:52:09
【问题描述】:

我正在为清理来自表单的数据编写一些代码而生气。 在表单中,我有一个名为“sender_countryCode”的输入字段,它只能包含 2 或 3 个文本字符,如 USA、FR、EN、... 以下代码应阻止与字符串不同的所有内容,但如果我在字段中写“我的文本”,则没有任何内容通过过滤器!

if  (isset($_POST["sender_countryCode"])){
    $var    =   $_POST["sender_countryCode"];
    $var    =   stripslashes($var);
    $var    =   htmlentities($var);
    $var    =   strip_tags($var);
    $var    =   filter_var($var, FILTER_SANITIZE_STRING);
    $sender["countryCode"] = $var;
    unset($var);
};

【问题讨论】:

  • 我在您的代码中没有看到任何将其限制为 2-3 个字符的内容? FILTER_SANITIZE_STRING 只是剥离标签并可选编码,它与限制字符串的长度无关
  • 你是对的,但是让明天的最大长度,主要问题是在我写“我的字符串”的形式中,代码显示我 $sender["countryCode"] 为空!
  • 尝试在每条语句后使用断点或仅使用echo $var; 以查看失败的位置。我看不出你的代码有什么问题。

标签: php http-post forms sanitize


【解决方案1】:

这行得通:) ...对不起,我有点晚了,但我看到它没有回答。这是我的解决方案:

function maxLengthCheckUp($this) {
    if ( strlen($this) <= 4){
        return TRUE;
    }
}
if (isset($_POST["sender_countryCode"]) 
  && !preg_match('/\s/',$_POST["sender_countryCode"]) 
  && maxLengthCheckUp($_POST["sender_countryCode"])) {
    $var    =   $_POST["sender_countryCode"];
    $var    =   stripslashes($var);
    $var    =   htmlentities($var);
    $var    =   strip_tags($var);
    $var    =   filter_var($var, FILTER_SANITIZE_STRING);
    $sender["countryCode"] = $var;
    echo $sender["countryCode"];
    unset($var, $sender);
};//end of if(...

使用以下元素创建您的表单:

<input type="text" name="sender_countryCode" id="sender_countryCode" />
<input type="submit" name="Submit" id="Submit" value="Submit" />

提交您的表单...创建一个普通表单...只需使用我上面的 php 代码。试试看:)

【讨论】:

    猜你喜欢
    • 2016-04-29
    • 2018-02-16
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2013-09-14
    • 2011-05-20
    • 1970-01-01
    • 2018-02-18
    相关资源
    最近更新 更多