我有一个带有文本字段的联系表单,供人们输入他们公司/组织的名称。我想阻止提交表单,如果它包含任何或变体的任何以下单词,: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']);
}
我知道我做错了,因为这不行。我不是程序员,但我正在尽力去理解该怎么做。任何帮助将不胜感激。非常感谢你。
答案 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']);
}
}