Значения флажка массива в $ _REQUEST, но не в $ _POST - PullRequest
2 голосов
/ 12 августа 2010

Почему-то значения моего массива флажков не отображаются в $ _POST.

Например:

<form method="post" action="">
    <input type="checkbox" name="cb[]" value="1">
    <input type="checkbox" name="cb[]" checked="checked" value="2">
    <input type="checkbox" name="cb[]" value="3">
    <input type="checkbox" name="cb[]" checked="checked" value="4">
    <input type="checkbox" name="cb[]" checked="checked" value="5">
    <input type="checkbox" name="cb[]" value="6">
    ...
    <input type="checkbox" name="cb[]" checked="checked" value="26">
    <input type="checkbox" name="cb[]" value="27">
    <input type="submit" value="insanitizer"/>
</form>

При подаче:

<?php
print_r($_POST); //Because print_r($_POST['cb']); gives ''

Array (
   [category] =>
)

print_r($_REQUEST['cb']);  //Showing the correct array name was used

Array
(
    [0] => 2
    [1] => 4
    [2] => 5
    [3] => 26
)
?>

Я счастлив, что могу хотя бы получить здесь данные о флажках, но у меня остался один вопрос:

Wtf

1 Ответ

1 голос
/ 12 августа 2010

Дур Дур Дур ...

В рамках общей инициализации я запускаю $ _POST и $ _GET через:

<?php
if(sizeof($_POST) > 0){
    foreach($_POST as $key => $value){
        $_POST[$key] = $this->_db->realEscapeString($value);
    }
}
if(sizeof($_GET) > 0){
    foreach($_GET as $key => $value){
        $_GET[$key] = $this->_db->realEscapeString($value);
    }
} 
?>

Который, кажется, уничтожает любые массивы ...

Заменено выше на:

<?php
...
if(sizeof($_GET) > 0){
        $this->initDbCleanArray($_GET);
    }
}
...

private function initDbCleanArray($a)
{
    if(sizeof($a) > 0){
        foreach($a as $key => $value){
            if(is_array($a[$key])){
                $this->initDbCleanArray($a[$key]);
            }
            else{
                $a[$key] = $this->_db->realEscapeString($value);
            }
        }
    }
}
?>

realEscapeString = mysql_real_escape_string

... и $ _POST ['cb'] живет!

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