2013-10-28 7 views
33

filter_input का उपयोग करते समय, मैं POST सरणी चर खींचने में सक्षम नहीं हूं। POST इनपुट:POST वैरिएबल ऐरे और filter_input

type    => 'container', 
action   => 'edit', 
data[display]  => 1, 
data[query_limit] => 100 

मैं $_POST से data चर का उपयोग कर सकते superglobal सही ढंग से एक सरणी, लेकिन filter_input फ़ंक्शन कुछ भी नहीं के रूप में: एक POST के लिए filter_input उपयोग करने के लिए

$data = $_POST['data']; // Working, woot 
$data = filter_input(INPUT_POST, 'data'); // returns null, should return array 
$action = filter_input(INPUT_POST, 'action'); // returns "edit" (correctly) 

यह संभव नहीं है सरणी चर?

+0

'filter_input_array()' एक आप की जरूरत नहीं है ? –

उत्तर

94

प्रयास करें:

$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); 
+2

अच्छा, पूरी तरह से काम करता है। ऐसा लगता है कि यह मेरे जैसा कुछ सामान्य है, उससे थोड़ा अधिक सरल होना चाहिए :) – jterry

+2

सहमत - कम से कम आपको लगता है कि PHP मैनुअल में एक नोट या कुछ शामिल होगा। –

+0

शानदार समाधान! – Jazzo

8

FILTER_REQUIRE_ARRAY अवास्तविक लौटाते हैं, तो POST चर एक अदिश मान है। यदि आप अनिश्चित हैं या POST दोनों स्केलर और सरणी मानों को स्वीकार करने वाले वैरिएबल का इरादा रखते हैं, तो इसके बजाय FILTER_FORCE_ARRAY का उपयोग करें, जो किसी भी इनपुट को सरणी के रूप में मानेंगे, अनिवार्य रूप से स्केलर मानों को कास्टिंग करेगा।

$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_FORCE_ARRAY); 
1

मैंने जावास्क्रिप्ट में फॉर्मडाटा का उपयोग किया है और jquery AJAX के साथ फ़ील्ड्स पोस्ट किया है। तरह से मैं इन सभी क्षेत्र प्राप्त है:

$arrFields = array('field1','field2','field2','field3', 'field4','field5'); 
foreach($arrFields as $field){ 
    $params[$field] = filter_input(INPUT_POST, $field, FILTER_DEFAULT); 
} 
var_dump($params); 

तो मैं एक सरणी में सभी डेटा जो मैं पर पारित कर सकते हैं मिल जाएगा ...

+1

filter_input_array() का उपयोग करने का प्रयास करें; –