0

我有一个带有文本字段的联系表,供人们输入公司/组织的名称。如果表单包含以下任何单词或其变体,我想阻止提交: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']);
    }

我知道我做错了什么,因为这不起作用。我不是程序员,但我正在尽我所能尝试了解该做什么。任何帮助将不胜感激。非常感谢。

4

3 回答 3

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']);
}
于 2013-10-21T23:07:19.987 回答
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']);
    }
}
于 2013-10-21T23:08:52.660 回答
0

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

于 2013-10-21T23:05:46.837 回答