2011-11-21 18 views
45

मुझे पोस्ट के साथ भेजे गए सभी चर डालने की ज़रूरत है, वे प्रत्येक उपयोगकर्ता का प्रतिनिधित्व करने वाले चेकबॉक्स थे।POST के साथ भेजे गए सभी चर प्राप्त करें?

अगर मैं प्राप्त का उपयोग मैं कुछ इस तरह मिलती है:

?19=on&25=on&30=on 

मैं डेटाबेस में चर डालने के लिए की जरूरत है।

मैं पोस्ट के साथ भेजे गए सभी चर कैसे प्राप्त करूं? एक सरणी या मूल्य कोमा या कुछ से अलग किया गया है?

+2

संभव डुप्लिकेट http://stackoverflow.com/questions/3058336/how-to-grab-all-variables- इन-ए-पोस्ट-पीएचपी) – mario

उत्तर

87

परिवर्तनीय $_POST स्वचालित रूप से आबादी है।

सामग्री देखने के लिए var_dump($_POST); आज़माएं।

आप इस तरह व्यक्तिगत मूल्यों का उपयोग कर सकते हैं: echo $_POST["name"];

यह, ज़ाहिर है, आपके प्रपत्र ठेठ रूप एन्कोडिंग का उपयोग कर रहा है (यानी enctype=”multipart/form-data”

अपनी पोस्ट डेटा किसी अन्य स्वरूप में है, तो (उदाहरण के लिए JSON या मान लिया गया है एक्सएमएल, तो आप कुछ इस तरह कर सकते हैं:

$post = file_get_contents('php://input'); 

और $post कच्चे डेटा में शामिल होंगे

मान लिया जाये कि आप मानक $_POST चर का उपयोग कर रहे हैं, आप अगर एक चेकबॉक्स इस तरह चेक किया गया है परीक्षण कर सकते हैं:

if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes') 
{ 
    ... 
} 

आप चेक बॉक्स की एक सरणी है (उदाहरण के

<form action="myscript.php" method="post"> 
    <input type="checkbox" name="myCheckbox[]" value="A" />val1<br /> 
    <input type="checkbox" name="myCheckbox[]" value="B" />val2<br /> 
    <input type="checkbox" name="myCheckbox[]" value="C" />val3<br /> 
    <input type="checkbox" name="myCheckbox[]" value="D" />val4<br /> 
    <input type="checkbox" name="myCheckbox[]" value="E" />val5 
    <input type="submit" name="Submit" value="Submit" /> 
</form> 

चेकबॉक्स नाम पर [ ] का प्रयोग इंगित करता है कि चुने गए मानों एक सरणी के रूप में PHP स्क्रिप्ट द्वारा पहुँचा जा जाएगा। इस मामले में $_POST['myCheckbox'] एक स्ट्रिंग नहीं लौटाएगा, लेकिन चेक किए गए चेकबॉक्स के सभी मानों वाली एक सरणी वापस कर देगा।

उदाहरण के लिए, यदि मैंने सभी बक्से चेक किए हैं, $_POST['myCheckbox'] एक सरणी होगी जिसमें {A, B, C, D, E} शामिल है। यहाँ कैसे मूल्यों की सरणी पुनः प्राप्त करने और उन्हें प्रदर्शित करने के लिए एक उदाहरण है:

$myboxes = $_POST['myCheckbox']; 
    if(empty($myboxes)) 
    { 
    echo("You didn't select any boxes."); 
    } 
    else 
    { 
    $i = count($myboxes); 
    echo("You selected $i box(es): "); 
    for($j = 0; $j < $i; $j++) 
    { 
     echo($myboxes[$i] . " "); 
    } 
    } 
+2

क्या आप अंत में एक उदाहरण/लिंक जोड़ने का इरादा रखते थे? –

+1

धन्यवाद, मैंने वास्तव में केवल print_r ($ _ POST) की कोशिश की थी और यह हर समय जीईटी का उपयोग करने के कारण काम नहीं कर रहा था। मेरा बुरा – lisovaccaro

+0

@ लिसो 22 कोई चिंता नहीं! हम सभी को होता है :) –

6

तो, $_POST सरणी की तरह कुछ?

आप का उपयोग var=xxx&var2=yyy स्ट्रिंग में फिर से प्राप्त करने के लिए कर सकते हैं। या वहां देखने के लिए बस print_r($_POST) देखें।

56

आप $_POST चर से उन तक पहुंच में सक्षम होना चाहिए: क्यों यह नहीं, यह आसान है

foreach ($_POST as $param_name => $param_val) { 
    echo "Param: $param_name; Value: $param_val<br />\n"; 
} 
+0

क्या आप अंत में एक उदाहरण/लिंक जोड़ने का इरादा रखते थे? –

+0

हाँ, आप इसे कैसे जानते थे? –

+1

उत्तर के अंत में कोलन नोटिस किया गया। –

3

:

extract($_POST); 
+2

भयानक विचार जैसा है; विशाल सुरक्षा छेद। –

+0

यह कोड पूरी तरह से अपने प्रश्न का उत्तर देता है "मैं POST के साथ भेजे गए सभी चर कैसे प्राप्त करूं?", जबकि अन्य उत्तरों नहीं हैं। और सबसे अच्छा जवाब कम हो जाता है, आंकड़े जाओ। सुरक्षा उनके प्रोजेक्ट के लिए कोई मुद्दा नहीं हो सकता है। क्या आप कह रहे हैं कि जिन्होंने इस फ़ंक्शन का आविष्कार करके php बनाया है, उन्हें कभी गलती नहीं की जानी चाहिए? – bubbahut

+0

@bubbahut बिल्कुल। कोई भी उत्पादन कोड के लिए सभी पोस्ट चर नहीं चाहता है। – cowboysaif

2

इस का उपयोग करते हुए यू सभी पोस्ट चर

print_r($_POST) 
4
प्राप्त कर सकते हैं

इसे बहिष्कृत किया गया है और सीधे सुपरग्लोबल्स तक पहुंचने की कामना नहीं की है (क्योंकि PHP 5.5 मुझे लगता है?)

हर आधुनिक आईडीई आपको बता देंगे:

नहीं पहुँच superglobals सीधे करो।

$myGetArgs = filter_input_array(INPUT_GET); 
$myPostArgs = filter_input_array(INPUT_POST); 
$myServerArgs = filter_input_array(INPUT_SERVER); 
$myCookieArgs = filter_input_array(INPUT_COOKIE); 
... 
: कुछ फिल्टर कार्यों (जैसे filter_input)

हमारे समाधान के लिए, का उपयोग करें सभी अनुरोध पैरामीटर प्राप्त करने के लिए, हम विधि filter_input_array

उपयोग करने के लिए एक इनपुट विधि से सभी पैरामीटर इस का उपयोग प्राप्त करने के लिए है

अब आप यह var_dump में उपयोग कर सकते हैं या अपने foreach -Loops

क्या नहीं काम करता है $ _REQUEST सुपर उपयोग करने के लिए है इस विधि के साथ वैश्विक। यह Allways NULL देता है और यह सही है।

आप सभी इनपुट पैरामीटर प्राप्त करने के लिए, अलग अलग तरीकों से अधिक आ रहा सिर्फ उन्हें तरह विलय निम्नलिखित विधि में की जरूरत है:

function askForPostAndGetParams(){ 
    return array_merge ( 
     filter_input_array(INPUT_POST), 
     filter_input_array(INPUT_GET) 
    ); 
} 

संपादित करें: इस विधि के संस्करण बढ़ाया (यह भी काम करता है जब अनुरोध तरीकों में से एक सेट नहीं हैं):

function askForRequestedArguments(){ 
    $getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array(); 
    $postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array(); 
    $allRequests = array_merge($getArray, $postArray); 
    return $allRequests; 
} 
[कैसे एक पोस्ट में सभी चर हड़पने के लिए (PHP)] (की
+0

मुझे आपके सुझाव का उपयोग करने की कोशिश करते समय घातक त्रुटि मिलती है "$ postArray = ($ tmp = filter_input_array (INPUT_POST))? $ Tmp: ऐरे();"। FATAL ERROR निरंतर अभिव्यक्ति में लाइन संख्या 5 –

+0

@ अष्टोन मॉर्गन पर अमान्य संचालन शामिल हैं मैंने इसका परीक्षण किया (कॉपी पेस्ट) और यह ठीक काम करता है। आप किस PHP संस्करण का उपयोग करते हैं? – mtizziani

संबंधित मुद्दे