我有一个表格,供用户将声誉授予人们。
我正在尝试检查用户是否通过给更多分数来将选择值更改为作弊行为
这是我的系统: 有一个选择框,用户可以在其中选择要赋予用户多少声望,我正在使用以下代码通过检查元素来检查用户是否更改了值:
// Validate post
if(trim($_POST["reputationToGive"]) === 1){
$added = 1;
} elseif(trim($_POST["reputationToGive"]) === 2){
$added = 2;
} elseif(trim($_POST["reputationToGive"]) === 3){
$added = 3;
} else {
// fallback event
}
我用于选择框的代码:
<option value='1'>Give 1 reputation</option>
但是无论如何,它总是触发后备事件。 寻找更正,祝您有美好的一天!
答案 0 :(得分:2)
我想===会给您带来问题。
我不知道您是如何编写选择框的。但我的根基在于,您可以返回字符串并将其与整数进行比较。修剪也会将其转换为字符串。
我还建议为此使用开关。
$value = (int) trim($_POST["reputationToGive"]);
$added = 0;
switch ( $value ) {
case 1:
case 2:
case 3:
$added = $value;
break;
default:
// fallback event
break;
}
如果您想确定答案在帖子中没有更改。您可以使用完全不同的值,形式将其转换为脚本中正确的值。
$value = trim($_POST["reputationToGive"]);
$added = 0;
switch ( $value ) {
case 'AD3ZY':
$added = 1;
break;
case 'B&7X1':
$added = 2;
break;
case 'Px!29':
$added = 3;
break;
default:
// fallback event
break;
}