PHP联系表单检测文本字段中的单词

时间:2013-10-21 23:02:28

标签: php forms words

我有一个带有文本字段的联系表单,供人们输入他们公司/组织的名称。我想阻止提交表单,如果它包含任何或变体的任何以下单词,:uc,uci,irvine,ucirvine。这是我的剧本:

// company group
    if(trim($_POST['cmpnyGrp']) === '') {
        $cmpnyGrpError = '<span class="error">Please enter your company or group name.</span>';
        $hasError = true;
    } else if (isset($_POST['cmpnyGrp'])) {
        $banned = array('uci', 'uc', 'ucirvine', 'uc-', 'uc ', 'irvine');
        $cmpnyGrpError = '<span class="error">If you are UCI, select UC under User Type and enter account string.</span>';
        $hasError = true;
    } else {
        $cmpnyGrp = trim($_POST['cmpnyGrp']);
    }

我知道我做错了,因为这不行。我不是程序员,但我正在尽力去理解该怎么做。任何帮助将不胜感激。非常感谢你。

3 个答案:

答案 0 :(得分:0)

现在,您初始化$banned然后从不使用它。你需要一个if(in_array($_POST['cmpnyGrp'], $banned) {...}。这将检查cmpnyGrp的值是否在禁止的单词数组中。但请注意,这种黑名单形式永远无法检查“uc”的每种可能变化。

答案 1 :(得分:0)

你宣布了一系列被禁止的词语,但却没有采取任何行动。您需要使用如下所示的内容:

foreach ($banned as $b) {
    if (strpos($_POST['cmpnyGrp'], $b) !== false) {
        $cmpnyGrpError = '<span class="error">If you are UCI, select UC under User Type and enter account string.</span>';
        $hasError = true;
        break;
    }
}

if (!isset($hasError)) {
    $cmpnyGrp = trim($_POST['cmpnyGrp']);
}

答案 2 :(得分:0)

试试这个:

if(trim($_POST['cmpnyGrp']) === '') {
    $cmpnyGrpError = '<span class="error">Please enter your company or group name.</span>';
    $hasError = true;
} else {
    $banned = array('uci', 'uc', 'ucirvine', 'uc-', 'uc ', 'irvine');
    $found = false;
    foreach ($banned as $b) {
        if (stripos($_POST['cmpnyGrp'], $b)) {
            $found = true;
            break; // no need to continue looping, we found one match
        }
    }
    if ($found) {
        $cmpnyGrpError = '<span class="error">If you are UCI, select UC under User Type and enter account string.</span>';
        $hasError = true;
    } else {
        $cmpnyGrp = trim($_POST['cmpnyGrp']);
    }
}