Максимальное значение CHECKBOX PHP HTML FORM - POST преобразуется в GET - PullRequest
0 голосов
/ 06 января 2019

HTML FORM (POST) отлично работает для параметров CHECKBOX со значениями <= 1 073 741 824 (добавлены запятые <em>здесь для удобства чтения)

однако, с флажком ПРОВЕРЕНО (и, следовательно, отправлено на сервер), имеющим ЗНАЧЕНИЕ 2 147 483 648 МЕТОД изменяется на GET, даже если ФОРМА указывает POST

Это использование необходимо для представления значений до 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-кода, сводящийся к двум существующим флажкам.

<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)

Пожалуйста, помогите мне увидеть, что мне не хватает w.r.t. флажок ограничения целочисленных значений.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Проблема теперь объяснена.

mod_sec в брандмауэре сервера перехватывал большие целочисленные значения в сообщениях POST

«COMODO WAF: поиск целочисленных атак с переполнением»

еще раз большое спасибо за ваши ответы, которые все помогли привести к этому открытию

(это правило mod_sec теперь занесено в белый список для этой учетной записи)

0 голосов
/ 06 января 2019

Невозможно воспроизвести то, что вы описываете, используя следующую тестовую страницу в Google Chrome ~, кажется, работает на 100% нормально. значения формы были увеличены на 1, но до каких-либо изменений проверены с исходными значениями - сработало нормально.

<code><!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
", print_r ($ _POST, true), $ _ SERVER ['REQUEST_METHOD']); } ?> Опция Опция

example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...