इस तथ्य के अलावा कि $_REQUEST
कुकीज से पढ़ता है, क्या $_REQUEST
के बजाय मुझे $_GET
और $_POST
का उपयोग करने का कोई कारण है? ऐसा करने के लिए सैद्धांतिक और व्यावहारिक कारण क्या हैं?
उत्तर
मैं $ _REQUEST का उपयोग करता हूं जब मैं बस कुछ डेटा वापस करने के लिए उपयोगकर्ता से कुछ डेटा चाहता हूं।
अनुरोध के साइड इफेक्ट्स होने पर $ _REQUEST का कभी भी उपयोग न करें। साइड इफेक्ट्स उत्पन्न करने वाले अनुरोध POST (अर्थात् कारणों से, और मूलभूत सीएसआरएफ सामानों के कारण भी होना चाहिए, एक झूठी आईएमजी टैग उपयोगकर्ता के बिना किसी भी जीईटी एंडपॉइंट को मार सकता है)।
$ _GET का उपयोग तब किया जाना चाहिए जब किसी पृष्ठ पर GETING या POSTING अलग-अलग परिणाम देगा।
$ _REQUEST का उपयोग आपके आवेदन में कुछ हमले वैक्टर खोलता है जहां चर को ओवरराइट किया जा सकता है जहां आप ऐसा नहीं करना चाहते हैं।
ऑर्डर जीपीसी (प्राप्त करें, पोस्ट, कुकी) पर भी विचार करें जिस पर $ _REQUEST भर जाएगा।
के साथ एक अनुरोध यानी:
$_GET['foo'] = 'bar'
$_POST['foo'] = 'baz'
$_REQUEST['foo'] == 'bar'
आप पहले से ही जवाब में से एक दे दी है में परिणाम होगा, तो मैं एक और दे देंगे:
यह एक स्टाइलिस्ट पसंद के अधिक। उदाहरण के लिए, आप आमतौर पर ऐसी जानकारी नहीं चाहते हैं जो सर्वर पर स्थिति को कैश करने योग्य हो, इसलिए आप इसे $_POST
चरों तक सीमित करना चाहते हैं।
उत्कृष्ट जवाब! मुझे इनमें से अधिक देखने की उम्मीद है। – Tom
$ _REQUEST की अक्सर उल्लिखित असुरक्षा फर्जी है। ये सभी उपयोगकर्ता से डेटा प्राप्त करने के तरीके हैं, जिनमें एक गैर-सुरक्षित मशीन है। आपको हमेशा इनपुट को स्वच्छ करना होगा, इसलिए किसी एक का उपयोग करने से कोई वास्तविक सुरक्षा लाभ नहीं है।
यह केवल तभी महत्वपूर्ण है जब आपके पास अलग-अलग चैनलों पर समान नाम वाले मानों के लिए अलग-अलग उपयोग हों। उस स्थिति में, आपको उनमें से कुछ का नाम बदलना चाहिए।
बहुत सच है, लोग चिल्लाते हैं कि अनुरोध कुछ बड़ा सुरक्षा छेद है, लेकिन यहां तक कि जीईटी और पोस्ट भी उतना ही असुरक्षित हैं, उनमें शरारती बिट्स को इंजेक्ट करना आसान है, आपको हमेशा अपने डेटा से आने वाली सामग्री को सभी डेटा को स्वच्छ करने की आवश्यकता है । – TravisO
तथ्य यह है कि $ _REQUEST कुकीज़
तथ्य यह है कि इस अपरिभाषित है (यह एक प्रति-स्थापना स्तर पर विन्यास है) इसके अलावा से पढ़ता है इसके अलावा, $_REQUEST
का उपयोग कर समस्या यह है कि बातों पर-सरल करता है । जीईटी अनुरोध और एक पोस्ट अनुरोध के बीच एक अर्थपूर्ण अंतर है (या होना चाहिए)। इस प्रकार यदि आप एक स्रोत या दूसरे से इनपुट प्राप्त करते हैं तो यह आपके आवेदन पर महत्वपूर्ण होना चाहिए। इस प्रकार HTTP प्रोटोकॉल को परिभाषित किया गया है, इसलिए इसे अनदेखा करके, आप प्रोटोकॉल को कमजोर कर रहे हैं, जो आपके एप्लिकेशन को कम अंतःक्रियाशील बनाता है। यह वही प्रकार का तर्क है जिसे प्रस्तुति उन्मुख मार्कअप के बजाय अर्थपूर्ण HTML मार्कअप का उपयोग करने के लिए बनाया जा सकता है। या अधिक आम तौर पर, कंक्रीट की स्थिति में जो भी काम करता है, उसके बजाए प्रोटोकॉल के इरादे के बाद।
यहां एक है जो मैंने अभी पाया है: When and why should $_REQUEST be used instead of $_GET/$_POST/$_COOKIE?। मुझे खेद है कि मुझे इसे जल्द से जल्द नहीं मिला, इसलिए मैंने सवाल नहीं पूछा होगा ...
HTTP जीईटी का अर्थ है कि एक पृष्ठ लाने के लिए उपयोग किया जाना चाहिए, जबकि पोस्ट का तर्क दिया जा सकता है कि जब उपयोग किया जाता है, तो आप उम्मीद करेंगे कि किसी प्रकार का राज्य बदल जाएगा।
उदाहरण के लिए, एक उम्मीद है कि एक ही पैरामीटर के साथ जीईटी का उपयोग करके पीओएसटी का उपयोग करते समय कई बार समान परिणाम मिलते हैं, वे नहीं कर सकते हैं।
जब आप समस्याओं का सामना करना चाहते हैं तो POST का उपयोग नहीं कर रहे हैं। मुझे लगता है कि रेल पर रूबी AJAX पुस्तकालयों ने POST के बजाय GET का उपयोग किया, और वेब मकड़ियों द्वारा स्पर्श किए जाने पर बहुत से डेटा खोने का कारण बन गया।
इसलिए, आपको शायद $ _REQUEST का उपयोग करने से बचना चाहिए। आपको पृष्ठ के उद्देश्यों के बारे में पता होना चाहिए, और जीईटी अनुरोध का उत्तर कैसे देना है, और POST अनुरोध का उत्तर कैसे देना है, इस बारे में निर्णय लेना चाहिए।
- 1. $ _GET/$ _POST/$ _COOKIE के बजाय $ _REQUEST कब और क्यों उपयोग किया जाना चाहिए?
- 2. पीएचपी $ _REQUEST $ _GET या $ _POST
- 3. $ _GET और $ _POST
- 4. आप PHP में $ _GET और $ _POST क्यों विलय करेंगे?
- 5. मुझे जीडब्ल्यूटी के बजाय jQuery का उपयोग क्यों करना चाहिए?
- 6. $ _POST के संभावित प्रकार और $ _GET मूल्यों
- 7. मुझे glbindAttribLocation का उपयोग क्यों करना चाहिए?
- 8. मुझे फ्लेक्स का उपयोग क्यों करना चाहिए?
- 9. क्या मुझे MySQL के बजाय NoSQL का उपयोग करना चाहिए?
- 10. मुझे एमएक्सएमएल का उपयोग क्यों करना चाहिए?
- 11. मुझे इनलाइन के बजाय __forceinline का उपयोग कब करना चाहिए?
- 12. मुझे ईएमएफ का उपयोग क्यों करना चाहिए?
- 13. मुझे हैश के बजाय ओपनस्ट्रक्चर का उपयोग कब करना चाहिए?
- 14. मुझे डिस्पैचर का उपयोग क्यों करना चाहिए?
- 15. मुझे डोलॉल्स का उपयोग क्यों करना चाहिए?
- 16. मुझे @properties का उपयोग क्यों करना चाहिए?
- 17. मुझे UIImagePickerControllerSourceTypePhotoLibrary का उपयोग UIImagePickerControllerSourceTypeSavedPhotosAlbum के बजाय कब करना चाहिए?
- 18. मुझे fprintf के बजाय fputs का उपयोग कब करना चाहिए?
- 19. मुझे गिटिनोरोर का उपयोग क्यों करना चाहिए?
- 20. मुझे डेटाकंट्रैक्ट के बजाय संदेश अनुबंधों का उपयोग कब करना चाहिए और क्यों?
- 21. मुझे कब और क्यों एक शब्दकोश के बजाय नामांकित का उपयोग करना चाहिए?
- 22. मुझे GET के बजाय डेटा पोस्ट क्यों करना चाहिए?
- 23. आप strcpy के बजाय strncpy का उपयोग क्यों करना चाहिए?
- 24. मुझे सीखना और स्ट्रैट्स का उपयोग क्यों करना चाहिए?
- 25. क्या मुझे FxCop का उपयोग करना चाहिए और क्यों?
- 26. क्या मुझे TFilename की बजाय स्ट्रिंग का उपयोग करना चाहिए?
- 27. डब्ल्यूपीएफ: मुझे अपना खुद का लिखने के बजाय मौजूदा एमवीवीएम फ्रेमवर्क का उपयोग क्यों करना चाहिए?
- 28. एसएसकेएनएफ के बजाय मुझे क्या उपयोग करना चाहिए?
- 29. com.google.appengine.repackaged * के बजाय मुझे क्या उपयोग करना चाहिए?
- 30. पर्ल में printf के बजाय मुझे क्या उपयोग करना चाहिए?
बधाई हो, आपको अभी अपना पहला स्वीकार्य उत्तर मिला है :) stackoverflow.com में आपका स्वागत है! – Tom