PHP HTML FORM CHECKBOX值的最大值-POST转换为GET

时间:2019-01-05 23:54:47

标签: php html forms checkbox

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)

请帮助我看看我在想什么复选框整数值限制。

2 个答案:

答案 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>

example