2012-07-12 14 views
5

का उपयोग करके पारित सारी जानकारी को कैप्चर करने के लिए PHP में कोई तरीका है, थोड़ी देर पहले, मैंने पृष्ठ में एक ही इनपुट नाम/छिपे हुए नाम का उपयोग करने के बारे में एक प्रश्न पूछा, और एक जवाब मिला जो जैसा कि मैंने सुझाव दिया था कि मुझे फ़ील्ड नाम के बाद ब्रैकेट डालने के लिए उपयोग करना था, जैसे partno[]POST विधि

मैं इसे अपने रूप में उपयोग नहीं कर सकता, क्योंकि यह कार्ट केवल कुछ फ़ील्ड नामों को पहचानने के लिए भेजा जा रहा है जैसे: partno, item, price, qty, आदि (मैं partno[], item[] इत्यादि का उपयोग नहीं कर सकता) इसलिए मुझे वास्तव में आवश्यकता है प्रत्येक समान फ़ील्ड नाम के लिए कई मान प्राप्त करने में सक्षम होने के लिए कई बार उपयोग किया जाता है। जब मैं विधि GET उपयोग करें, यह प्रत्येक क्षेत्र एड्रेस बार में इस्तेमाल किया नाम के लिए सभी मूल्यों को प्रदर्शित करेगा। आप this आज़मा सकते हैं और फॉर्म जमा कर सकते हैं। पता बार में यूआरएल देखें।

मेरा नया सवाल यह है: वहाँ PHP में एक तरह से सभी जानकारी POST विधि का उपयोग कर पारित कर दिया पर कब्जा करने की है? (ऊपर लेकिन POST, नहीं GET का उपयोग कर क्या उदाहरण में पता पट्टी में दिखाई देता है) की तरह। अगर मैं इसे पकड़ने का तरीका समझ सकता हूं तो मैं इसे पार्स कर सकता हूं।

धन्यवाद, केली

+0

बस अपने फॉर्म में 'method = "post" 'का उपयोग करें? – cweinberger

+0

@ हरकीरी ओप एक ही पैरामीटर का उपयोग कई बार, 5x पार्टनो इत्यादि का उपयोग करता है जैसा कि आप अपने नमूना यूआरएल में देख सकते हैं। यह पाने और न ही पोस्ट के साथ काम नहीं करेगा। आपको अभी भी प्रति इनपुट एक अद्वितीय नाम की आवश्यकता है। – 32bitfloat

+1

यह सीमा और 'नाम = "ब्रैकेट []" वाक्यविन्यास पूरी तरह से एक PHP चीज है, यह एक ही नाम के साथ कई इनपुट होने के लिए पूरी तरह से वैध है। –

उत्तर

2

तुम बस $_POST बजाय $_GET का उपयोग करें।

तो अगर आप निम्नलिखित तरीके से प्राप्त उपयोग कर रहे थे:

?something=somevalue 

और $_GET['something'] के साथ पकड़ने गए थे, अब आप $_POST['something'] का प्रयोग करेंगे।

+0

मेरा मानना ​​है कि ओपी के प्रश्न का बिंदु समान नाम वाले फ़ील्ड के मूल्यों तक पहुंच रहा था, ब्रैकेट नोटेशन जैसे 'name =" आइटम्स [] "', पोस्ट/प्राप्त से स्विच करने से कोई फर्क नहीं पड़ता। ओपी पहले ही पूछ रहा है कि इसे 'POST' के साथ कैसे किया जाए, इसलिए मैं नहीं देख सकता कि यह उत्तर क्या है। मुझे पता है कि पूरी चीज को पढ़ने के बजाय प्रश्न शीर्षक का जवाब देने की प्रवृत्ति है। –

+0

मेरा उत्तर उसे 'नाम = "आइटम []" प्रारूप का उपयोग नहीं करता है। आप स्पष्ट रूप से मूल विधि को पूरी तरह समझ नहीं पाते हैं, क्योंकि यह मेरे द्वारा प्रदान किए गए उत्तर से पूरी तरह अलग है। मुझे पूरा यकीन है कि वह मेरे जवाब के लिए पहला वोट भी था, इसलिए हाँ। – Valjas

+0

प्रश्न को सावधानी से दोबारा पढ़ें (साथ ही, नए उपयोगकर्ता 15 प्रतिनिधि तक पहुंचने तक ऊपर नहीं जा सकते हैं, और प्रोफ़ाइल से मैं 0 वोट कास्ट देखता हूं)। –

1

PHP में पोस्ट के बाद से एक सरणी से ज्यादा कुछ नहीं, बस इस पर पुनरावृति है।

foreach($_POST as $k => $v) { 
    echo($k . ': '. $v . '<br>'); 
} 
+0

इस समस्या में यह है कि एक ही नाम के साथ कई इनपुट पिछले एक को ओवरराइट करेंगे जब '$ _POST' बनाया जाएगा, जब तक कि आप 'ब्रैकेट किए गए []' नामों का उपयोग न करें, जिसे ओपी कहता है कि वे नहीं कर सकते हैं। –

-1

स्ट्रिंग के समान नाम के साथ 2 इनपुट पोस्ट करने का कोई तरीका नहीं है। सरणी को स्ट्रिंग करने के लिए आपको कार्ट को संशोधित करना चाहिए।

आप प्राप्त उपयोग कर रहे हैं आप parse_url() फ़ंक्शन की जाँच कर सकते हैं।

+0

पैरामीटर नाम का उपयोग करने के लिए एक बार फिर से बहुत संभव है, केवल उसी तरह php अनुरोध करता है कि आप '$ _POST' का उपयोग करके ऐसे एक पैरामीटर तक पहुंचने की अनुमति नहीं देते हैं, इसलिए आपको स्वयं अनुरोध को पार्स करना होगा – mata

2

आप इनपुट धारा से सीधे बेदाग डेटा प्राप्त कर सकते हैं:

<input name="type" value="val1"> 
<input name="type" value="val2"> 
<input name="type" value="val3"> 

आप इस प्रकार का स्ट्रिंग मिल जाएगा:

type=val1&type=val2&type=val3 

file_get_contents('php://input'); 

तो तुम कुछ इस तरह है, तो

फिर आप एक सरणी में इस स्ट्रिंग पार्स और अपने खुद के "कच्चे पद डेटा" बना सकते हैं।

http://php.net/manual/en/wrappers.php.php

php: // इनपुट, रीड-ओनली स्ट्रीम कि आप कच्चे डेटा को पढ़ने के लिए अनुरोध शरीर से अनुमति देता है। POST अनुरोधों के मामले में, यह को $ HTTP_RAW_POST_DATA के बजाय php: // इनपुट का उपयोग करने के लिए बेहतर है क्योंकि यह विशेष php.ini निर्देशों पर निर्भर नहीं है। इसके अलावा, उन मामलों के लिए जहां $ HTTP_RAW_POST_DATA डिफ़ॉल्ट रूप से पॉप्युलेट नहीं किया गया है, यह संभावित रूप से हमेशा_पोपलेट_raw_post_data को सक्रिय करने के लिए कम स्मृति गहन विकल्प है।php: // इनपुट enctype = "multipart/form-data" के साथ उपलब्ध नहीं है।

+0

मैंने php देखा: // लेकिन मुझे यकीन नहीं था कि इसे कैसे कार्यान्वित किया जाए। आपके द्वारा प्रदान की गई चीज़ों के साथ, मैं अपनी समस्याओं का समाधान करने में सक्षम था ... धन्यवाद बहुत बहुत धन्यवाद। केली – user1519293

+0

बस इस तरह: '$ my_data = file_get_contents ('php: // input'); ', फिर अपने चर प्राप्त करने के लिए' my_data' पार्स करें (आपने संकेत दिया है कि आप उस भाग को संभाल सकते हैं, अगर नहीं तो पूछने के लिए स्वतंत्र महसूस करें)। –

0

यदि आप देखना चाहते हैं कि सभी $ _POST क्या भेज रहा है, या तो var_dump ($ _ POST) या print_r ($ _ POST) गूंजें। यह आपको सभी फ़ील्ड नाम और डेटा दिखाएगा, भले ही फ़ील्ड नामों में आपके पार्टनो [जैसे।

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