2012-08-30 12 views
6

क्या है कच्चे पोस्ट डेटा के अर्थ को समझने की कोशिश कर रहा हूं। $HTTP_RAW_POST_DATA के लिए PHP मैनुअल पृष्ठ बस यह बताता है कि इस चर में Raw POST data है।कच्चे पोस्ट डेटा

जब यह चर सेट किया जाएगा और कच्चे पोस्ट डेटा का क्या अर्थ है?

मैं समझता हूँ $_POST लेकिन पूरी तरह से साथ $HTTP_RAW_POST_DATA

+2

क्या आपने यह देखने की कोशिश की है कि वहां क्या है? 'var_dump ($ HTTP_RAW_POST_DATA); 'या इससे भी बेहतर' var_dump (file_get_contents (" php: // input "));' – zerkms

+0

@zerkms: हाँ, यह 'NULL' है। मैंने दोनों की कोशिश की और आउटपुट 'NULL',' स्ट्रिंग (0) "" 'क्रमशः – Daric

+1

http://stackoverflow.com/questions/3173547/whats-the-difference-between-post-and-raw-post-in- php-at-all –

उत्तर

9

एक HTTP अनुरोध दो हिस्से होते हैं। हेडर और एक शरीर का एक सेट।

हेडर में यूआरएल की तरह चीजें शामिल हैं और कैशिंग कंट्रोल हेल्पर्स (जैसे कि "मेरे पास कल से इसका संस्करण है, केवल बदलाव होने पर मुझे एक नया दें, ठीक है?")।

अनुरोध के प्रकार के आधार पर शरीर प्रकट हो सकता है या नहीं भी हो सकता है। POST अनुरोधों में शरीर हैं।

शरीर किसी भी प्रारूप में ग्राहक पसंद कर सकता है। हेडर में से एक सर्वर को बताएगा कि प्रारूप क्या है।

एचटीएमएल रूपों द्वारा उपयोग किए जाने वाले कुछ प्रारूप हैं, और PHP जानता है कि इन्हें कैसे पार्स करें और डेटा को $_POST में डालें।

यदि डेटा किसी अन्य प्रारूप में है, जैसे कि JSON, या यदि डेटा PHP के quirks (जैसे [] के नियमों के अंत में समान नाम के साथ नहीं है) के अनुरूप नहीं है तो आप शायद डेटा को सीधे एक्सेस करें ताकि आप इसे स्वयं पार्स कर सकें।

यह कच्चा पोस्ट डेटा है।

+0

साफ स्पष्टीकरण! – Daric

1

HTTP उलझन में एक पाठ आधारित प्रोटोकॉल है, तो सभी डेटा एक स्ट्रिंग के रूप में पारित हो जाता है है। जब आप $_POST के साथ काम करते हैं - आपके पास पहले से ही एक सरणी रूप में होने के लिए संसाधित पास डेटा है। यह आपके स्क्रिप्ट पर नियंत्रण पारित होने से ठीक पहले php द्वारा किया जाता है।

इसलिए कच्चे पोस्ट डेटा में डेटा के माध्यम से एक डेटा होता है।

संभावना आप a=1&b=2 डेटा देखते हैं, के रूप में आप यह यूआरएल में देखते हैं

+0

धन्यवाद @zerkms। – Daric

1

चीजें आप http प्रोटोकॉल के साथ कर सकते से एक एक पोस्ट अनुरोध जो कुछ पाठ वापस सर्वर को भेजता करते हैं।

$HTTP_RAW_POST_DATA उस पाठ को शामिल करेगा, इससे कोई फर्क नहीं पड़ता कि यह क्या कहता है।

अधिकांश समय जब हम POST अनुरोध करते हैं, तो हम भेजे गए पाठ में "सामग्री-प्रकार" जोड़ देंगे। यह सर्वर को बताता है कि यह किस प्रकार की सामग्री है। वेब पर अधिकांश समय हम सामग्री प्रकार को 'एप्लिकेशन/एक्स-www-form-urlencoded' के रूप में भेज रहे हैं।

जब एक सर्वर पर सामग्री प्रकार मार्कर के साथ एक पोस्ट अनुरोध प्राप्त करता है, सर्वर इतना है कि "परीक्षण = हैलो" हो जाता है एक $_POST सरणी में डेटा बारी करने की कोशिश करने के लिए पता चल जाएगा:

$_POST['test']='hello' 
4

$_POST हो सकता है

$HTTP_RAW_POST_DATA इस

012 तरह दिखता है: के रूप में और $HTTP_RAW_POST_DATA बंटवारे के बाद परिणाम ने कहा, php जिस तरह से हम $_POST में देख उदाहरण के लिए में कच्चे पद डेटा और स्वरूप विभाजन
key1=value1&key2=value2 

तो $_POST इस प्रकार दिखाई देगा:

$_POST = array(
    "key1" => "value1", 
    "key2" => "value2",); 
0

$HTTP_RAW_POST_DATA जैसे कच्चे पोस्ट डेटा शामिल हैं निम्नलिखित:

  • पाठ
  • json
  • एक्सएमएल
  • एचटीएमएल

सामान्य तौर पर, php://input के बजाय इस्तेमाल किया जाना चाहिए $HTTP_RAW_POST_DATA. क्योंकि यह सुविधा PHP 5.6.0 के रूप में अस्वीकृत कर दी गई है। इस सुविधा पर निर्भर करना बेहद निराश है।

स्रोत: php.net - $HTTP_RAW_POST_DATA

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