HTML FORM(POST)对于CHECKBOX参数的VALUEs <= 1,073,741,824(为便于阅读,在此处添加了逗号)效果很好
但是,选中复选框CHECKED(并因此发送到服务器),其值为2147483648 即使FORM指定POST,METHOD也会更改为GET
需要使用此用法来表示最大2 ** 64的值,并且HTML复选框标记是根据当前数据库内容以编程方式生成的。
消除歧义:这与MAXLENGTH(字符长度)无关 消除歧义:这与复选框选项的数量无关
当我添加HTML5 max =“ 4294967296”(测试时为2 ** 32)时,它仍然无法正常工作。
When i change the value='2147483648' parameter to a *char str*
value='x2147483648'
it works as desired (viz., POST)
我尝试过CHROME&FIREFOX。
这是HTML摘录的精简部分,其中包括2个关键复选框。
<form method="POST" action="example.com/xxx.php" >
<input type="checkbox" name="SeasonBits1" value='1073741824' >
<label for="SeasonBits1">Option[1,073,741,824]</label>
<input type="checkbox" name="SeasonBits2" value='2147483648' >
<label for="SeasonBits2">Option[2,147,483,648]</label>
<input name="Command" type="submit" id="Command2" value="UPDATE" />
</form>
results when only Option[1..] is checked:
[REQUEST_METHOD] => POST
[SeasonBits1] => 1073741824
results when only Option[2..] is checked:
[REQUEST_METHOD] => GET
(no $_POST *OR* $_GET array contents at all)
请帮助我看看我在想什么复选框整数值限制。
答案 0 :(得分:1)
现在说明问题。
服务器防火墙中的mod_sec正在POST中捕获大整数值
“ COMODO WAF:寻找整数溢出攻击”
再次感谢您的答复,所有这些都促成了这一发现
(此帐户的mod_sec规则现已列入白名单)
答案 1 :(得分:0)
无法使用Google Chrome中的以下测试页复制您描述的内容〜似乎可以100%正常运行。表单值增加了1
,但在进行任何更改之前使用原始值进行了测试-可以。
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>POST changes to GET???</title>
</head>
<body>
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' or !empty( $_REQUEST['SeasonBits1'] ) or!empty( $_REQUEST['SeasonBits2'] )){
printf( "<pre>%s\n%s</pre>", print_r( $_POST, true ),$_SERVER['REQUEST_METHOD'] );
}
?>
<form method='POST'>
<input type='checkbox' name='SeasonBits1' value='1073741825' >
<label for='SeasonBits1'>Option[1,073,741,825]</label>
<input type='checkbox' name='SeasonBits2' value='2147483649' >
<label for='SeasonBits2'>Option[2,147,483,649]</label>
<input name='Command' type='submit' id='Command2' value='UPDATE' />
</form>
</body>
</html>