如何使用filter_put_array将$_POST数据正确传递到switch case语句


How to properly pass $_POST data to switch case statement using using filter_input_array

GOAL:echo switch语句用例,映射/匹配到"postType"

问题:无论我尝试什么,$_POST数据似乎都会消失,因此开关语句默认情况会被触发,表单会再次显示,而不是我希望根据$filter变量中包含的postType显示的预期/期望的echo语句。我在PHP 5.4 中工作

var_dump返回:array(2){["postType"]=>NULL["myContent"]=>string(4)"dsfs"}

我相信我的表单和switch语句语法/格式都是正确的。我认为,我的问题在于数据是如何通过filter_put_array(input_POST,[…])传递到交换机的

我简陋的代码存根:

//test data
//$_POST = [ 'postType' => 'myPlayby',  'myContent' => 'Anna King', ];

//build the array of data created by from for switch checks
$filter = filter_input_array(INPUT_POST, [ 'postType'   => [], 'myContent'  => [], ]);

var_dump($filter);
echo "<br /><br />";

//$search = false;
switch ($filter['postType'])
{
case 'myChar':
    echo "Character Check: " . $filter['myCharacter'];
    $search = $filter['myCharacter'];
    break;
//test data ought to trigger myPlayby case showing 'Playby check: Anna King' here... frack
case 'myPlayby':
    echo "Playbe Check: " . $filter['myPlayby'];
    $search = $filter['myPlayby'];
    break;
case 'myFoobar':
    echo "Foo Check: " . $filter['myFooBar'];
    $search = $filter['myFooBar'];
    break;
default:
    echo '<form type="submit" method="post" action="' . THIS_PAGE . '"; >
        <select name="postTypes">
        <option default disable>-------------</option>
        <option value="myChar">Character</option>
        <option value="myPlayby">Playby</option>
        <option value="myFooBar">Foo</option>
        </select> 
        <input type="text" value="" name="myContent"/>
        <input type="submit" name="submit" value="Submit"> 
        </form>' ;
    break;
} 

这是我第一次使用filter_put_array处理$_POST数据,经过一天的尝试、错误、研究和努力,包括查看Lynda.com、搜索谷歌以及阅读我在StackOverflow、php.net等网站上能找到的相关帖子,我感到很困惑。

我找到了答案,我是正确的,因为问题在于我如何设置filter_put_array。

通过这样重构代码:

$filter = filter_input_array(INPUT_POST, [
  'postType'    => [ 'filter' => FILTER_SANITIZE_STRING ],
  'contents'    => [ 'filter' => FILTER_SANITIZE_STRING ],
]);
$search = false; //in the switch, false is reassigned value of the sanitized string and all is happiness