फॉर्म सबमिट करने पर php $ _POST सरणी खाली


99

मेरे पास एक कस्टम CMS है जो मैंने अपने देव बॉक्स (Ubuntu / PHP5 + / MySQL5 +) पर पूरी तरह से काम किया है।

मैंने अभी इसे अपने ग्राहक के लिए उत्पादन बॉक्स में स्थानांतरित कर दिया है और अब सभी फॉर्म सबमिशन खाली $ _POST सरणियों के रूप में दिखाई दे रहे हैं।

मैंने पाया कि डेटा को सत्यापित करने के लिए एक ट्रिक का उपयोग किया जा रहा है file_get_contents('php://input');और डेटा वहाँ ठीक दिखाई दे रहा है - $_POST/ $_REQUESTसरणियाँ हमेशा खाली होती हैं।

मैंने यह भी सत्यापित किया है कि सामग्री-प्रकार के शीर्ष लेख फायरबग ( application/x-www-form-urlencoded; charset=utf-8) के माध्यम से सही हैं ।

यह समस्या इस बात की परवाह किए बिना हो रही है कि कोई फॉर्म AJAX के माध्यम से सबमिट हो रहा है या एक नियमित फॉर्म सबमिट है।

कोई भी मदद बहुत ही सराहनीय होगी!

php  arrays  forms  post 

Check_max_size चेक करें: मान 8M के रूप में सेट किया जाना चाहिए, 8MB नहीं। नवीनतम मामले में, आपको कोई त्रुटि नहीं दिखेगी, लेकिन $ _POST का आकार 0 पर सेट होगा
सर्गेई कार्पोव

खबरदार: अगर स्लैश गायब है तो अपाचे 301 रीडायरेक्ट करता है।
Leandro

जवाबों:


186

मुझे पता है कि यह प्रश्न एक फॉर्म के माध्यम से POST के बारे में था, लेकिन JSON सामग्री-प्रकार के साथ POST करने पर इसी तरह के मुद्दे के जवाब की तलाश में यहां आया था। जवाब मिला और इसे साझा करना चाहता था क्योंकि इससे मुझे बहुत समय लगा।

JSON सामग्री का उपयोग करते समय $ _POST सरणी पॉप्युलेट नहीं होगी (केवल बहु-भाग रूपों के साथ जो मुझे विश्वास है)

यहाँ समस्या को ठीक करने के लिए क्या काम किया गया है:

$rest_json = file_get_contents("php://input");
$_POST = json_decode($rest_json, true);

उम्मीद है कि यह किसी की मदद करता है!


1
यह वर्कअराउंड समझ में आता है - इसने मेरे बैच-अपडेट कंट्रोलर :) को तय कर दिया है
मार्टिन ज़िटलर

2
एक अन्य विकल्प है Content-Typeहेडर को बदलना application/x-www-form-urlencodedऔर फिर अपने डेटा को क्रमबद्ध करना $.param(dataObject)। वह मदद करनी चाहिए।
atुकास्ज़बाकमान

1
@ ŁukaszBachman कैसे करना है कि अगर dataobject ........ की तरह कुछ है title=something&body=anything। मैं शीर्षक और निकाय का मूल प्राप्त करना चाहता हूं। $ dataobject ["शीर्षक"] खाली लौटता है। मेरे मामले में $ _POST खाली है। और file_get_contents ("php: // input") का उपयोग करके इसे प्राप्त करने का एकमात्र तरीका ... सिवाय इसके कि यह जस का तस नहीं है।
खुर्शीद आलम

यह बहुत उपयोगी है। अजीब बात यह है कि मुझे अपने विकास मशीन पर जसन को भेजने में कोई परेशानी नहीं है, लेकिन उत्पादन एक पर करें।
साइमन एच।


86

यहां एक और संभावित कारण है - मेरा फॉर्म WWW के बिना domain.com को सबमिट कर रहा था। और मैंने "WWW" को जोड़ने के लिए एक स्वचालित रीडायरेक्ट स्थापित किया था। $ _POST सरणी प्रक्रिया में खाली हो रही थी। इसलिए इसे ठीक करने के लिए मुझे www.domain.com को सबमिट करना होगा


24
मेरे लिए, एक यूआरएल फिर से लिखना htaccess, डेमिट, POST के काम न करने का कारण था। मैं स्वचालित रूप से सभी यूआरएल के स्लैश को जोड़ रहा था, लेकिन अधिनियम के रूप में कोड में मैं एक स्लैश के बिना एक यूआरएल का उपयोग कर रहा था। आपके उत्तर ने मदद की, क्योंकि मैंने कभी भी .htaccess की जांच करने के लिए नहीं सोचा था। +1
बिनर

मैंने गोडैडी का उपयोग करके डोमेन फॉरवर्डिंग (मास्किंग के साथ) किया था, और यह समस्या का स्रोत प्रतीत होता है। धन्यवाद!
क्रिस प्रिंस

1
मुझे भी इसी तरह की समस्या थी, यह मेरी .htaccessफाइल से आ रही थी । यह .phpURL से एक्सटेंशन को अलग कर रहा था , और मेरा फॉर्म POSTएक्सटेंशन के साथ URL से जुड़ा हुआ था।
इमानुएल विंटिलो

25

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। एक साधारण फिक्स निकला। जिस रूप में मेरे पास था

<फ़ॉर्म कार्रवाई = "निर्देशिका" विधि = "पोस्ट">

जहाँ निर्देशिका का नाम था ... निर्देशिका। मेरा POST ऐरे बिलकुल खाली था। जब मैंने अपने ब्राउज़र में url को देखा, तो इसे आगे की तरफ स्लैश के साथ प्रदर्शित किया गया।

मेरी कार्रवाई के अंत में फ़ॉरवर्ड स्लैश को जोड़ने का काम किया -

<फ़ॉर्म कार्रवाई = "निर्देशिका /" विधि = "पोस्ट">

मेरा $ _POST सरणी फिर से भर गया था!


1
यह एक तय नहीं होना चाहिए, उदाहरण के लिए CakePHP पर, जिसकी एक अच्छी मार्ग प्रणाली है, इस पर विफल रही, (मेरा मतलब केक विफल नहीं है), शायद इस समस्या का दृष्टिकोण फ्रेमवर्क या .php फाइलें नहीं है। लेकिन कुछ अपाचे पर कॉन्फ़िगर, मैं इस समस्या पर आगे की जांच करना चाहते हैं। यह काफी दिलचस्प है।
जेम्स

एक समान नोट पर, मेरे पास ओपी के समान मुद्दा था, लेकिन केवल अगर <form>टैग में एक nameविशेषता नहीं थी , और केवल आईई में।
१२:१३ पर jkt123

13

सुनिश्चित करें कि, php.ini में:

  • track_vars (यह केवल बहुत पुराने PHP संस्करणों पर उपलब्ध है) पर सेट है On
  • variables_order पत्र होता है P
  • post_max_size एक उचित मूल्य पर सेट है (उदाहरण के लिए 8 एमबी)
  • (अगर सुहोसिन पैच का उपयोग कर रहे हैं ) suhosin.post.max_varsऔर suhosin.request.max_varsकाफी बड़े हैं।

मुझे लगता है कि मेरा दूसरा सुझाव आपकी समस्या को हल करेगा।


1
धन्यवाद MrMage, आपकी अंतर्दृष्टि की सराहना करते हैं और उन ini सेटिंग्स की जाँच करेंगे और आपको बताएंगे कि क्या चाल है। धन्यवाद!

1
"post_max_size" सेटिंग मेरी शोस्टॉपर है। मैं फॉर्म सबमिट के दौरान एक बड़ी फ़ाइल अपलोड कर रहा था, और इस सेटिंग में कम मूल्य था। इसलिए मुझे फॉर्म सबमिट करते समय एक खाली पोस्ट सरणी मिल रही है।
shasi kant

9

मैंने पाया है कि HTTP से HTTPS पर पोस्ट करते समय, $_POSTखाली आता है। फॉर्म का परीक्षण करते समय ऐसा हुआ, लेकिन मुझे इसका एहसास होने तक थोड़ा समय लगा।


5

मैं एक समान अभी तक थोड़ा अलग मुद्दे पर आया था और इस मुद्दे को समझने में 2 दिन लगे।

  • मेरे मामले में भी POST सरणी खाली थी।

  • फिर file_get_contents ('php: // input') के साथ जाँच की; और वह भी खाली था।

बाद में मैंने पाया कि अगर मैं POST जमा करने के बाद लोड किए गए पेज को रिफ्रेश करता हूं तो ब्राउजर फॉर्म डेटा को दोबारा सबमिट करने की पुष्टि नहीं कर रहा था। यह सीधे ताज़ा पृष्ठ था। लेकिन जब मैंने फॉर्म URL को एक अलग तरीके से बदल दिया तो यह ठीक से POST पास कर रहा था और पेज रीफ्रेश करने का प्रयास करने पर डेटा फिर से भेजने के लिए कहा।

फिर मैंने जाँच की कि वास्तविक URL में क्या गलत है। URL में कोई दोष नहीं था, हालाँकि यह URL में index.php के बिना एक फ़ोल्डर की ओर इशारा कर रहा था और मैं index.php पर POST की जाँच कर रहा था।

यहां मैंने / से / to /exex.php पर पुनर्निर्देशन पर संदेह किया है क्योंकि POST डेटा खो गया है और URL के साथ अनुक्रमणिका सूचकांक के साथ URL का परीक्षण किया गया है।

वह काम किया।

इसे यहाँ पोस्ट किया है ताकि कोई इसे मददगार मिले।


1
मुझे एक ही समस्या थी, url के अंत में '/' के बिना, $ _REQUEST में कुछ भी मौजूद नहीं है, लेकिन '/' या '/index.php' के साथ, सभी पोस्ट किए गए डेटा $ _REQUEST में मौजूद हैं। यह मेरी nginx सेटिंग्स या कुछ और बात हो सकती है!
मोहम्मद

5

यदि आप उदाहरण के लिए एक निर्देशिका में एक index.php फ़ाइल पर पोस्ट कर रहे हैं /api/index.php अपने फ़ॉर्म में सुनिश्चित करें कि आप फ़ाइल के लिए पूर्ण निर्देशिका निर्दिष्ट करें जैसे

यह

<form method="post" action="/api/index.php"> 
</form>

या

<form method="post" action="/api/"> 
</form>

काम करता है।

लेकिन यह विफल हो जाता है

<form method="post" action="/api"> 
</form>

मैं वास्तव में इसके विपरीत है। मुझे पता चला कि /my_uriकाम करेगा लेकिन नहीं /my_uri/
लिंक 14

1
एक ही समस्या थी। ऐसा लगता है कि अपाचे या नेग्नेक्स / एपीआई से / एपी /
जॉन स्मिथ के

स्लैश गायब होने पर अपाचे एक स्वचालित रीडायरेक्ट 301 करता है। आपके उत्तर और टिप्पणियों के लिए धन्यवाद उपयोगी है।
Leandro

4

इस बिंदु पर एक सुरुचिपूर्ण समाधान न करें, लेकिन इस समस्या का सामना करने वाले अन्य लोगों के भविष्य के संदर्भ के लिए मेरे निष्कर्षों को साझा करना चाहते हैं। समस्या का स्रोत एक .htaccess फ़ाइल में 2 ओवरराइड php मान था। मैंने इन 2 मानों को डिफ़ॉल्ट रूप से फ़ाइल अपलोड की सीमा की सीमा को बढ़ाने के लिए डिफ़ॉल्ट 8MB से कुछ बड़ा करने के लिए जोड़ा था - मैंने देखा कि इन 2 मूल्यों को htaccess फ़ाइल में बिल्कुल भी, चाहे वह डिफ़ॉल्ट से बड़ा हो या छोटा, समस्या का कारण बना। ।

php_value post_max_size xxMB
php_value upload_max_filesize xxMB

मैंने अतिरिक्त रूप से सभी suhosin.post.xxx/suhosin.upload.xxx var के लिए सीमा बढ़ाने के लिए अतिरिक्त चर जोड़े, लेकिन दुर्भाग्य से इस समस्या से इनका कोई प्रभाव नहीं पड़ा।

सारांश में, मैं वास्तव में यहाँ "क्यों" नहीं समझा सकता, लेकिन मूल कारण की पहचान कर चुका हूं। मेरी भावना यह है कि यह अंततः एक suhosin / htaccess मुद्दा है, लेकिन दुर्भाग्य से एक है कि मैं 2 php ओवरराइड मूल्यों को हटाने के अलावा अन्य को हल करने में सक्षम नहीं था।

आशा है कि यह भविष्य में किसी की मदद करता है क्योंकि मैंने मुट्ठी भर घंटों को यह पता लगाया। उन सभी के लिए धन्यवाद जिन्होंने इस (MrMage, एंड्रयू) के साथ मेरी मदद करने के लिए समय लिया


यह सर्वरफ़ॉल्ट पर यह सवाल पूछने के लायक हो सकता है, खासकर अगर समस्या सर्वर सेट-अप / htaccess में निहित है।
डेविड का कहना है कि मोनिका

5
अगर मैं गलत नहीं हूं, तो आकार को 'xxM' की तरह निर्दिष्ट किया जाना चाहिए, न कि 'xxMB' के रूप में, इसलिए मुझे आश्चर्य है कि अगर इसके साथ कुछ करना हो ...
JC Inacio

4

मैं समस्या को हल कर सकता है enctype = "application / x-www-form-urlencoded" का उपयोग करके डिफ़ॉल्ट के रूप में "पाठ या सादे" है। जब आप $ DATA में जाँच करते हैं तो सेपरेटर "टेक्स्ट / प्लेन" के लिए एक स्थान होता है और "urlencoded" के लिए एक विशेष वर्ण होता है।

फ्रैंक का संबंध है


4

enable_post_data_readingसेटिंग अक्षम होने के कारण यह होगा। प्रलेखन के अनुसार:

enable_post_data_reading

इस विकल्प को अक्षम करने से $ _POST और $ _FILES आबाद नहीं होते हैं। पोस्टडेटा पढ़ने का एकमात्र तरीका php के माध्यम से होगा: // इनपुट स्ट्रीम आवरण। यह प्रॉक्सी अनुरोधों या मेमोरी कुशल फैशन में POST डेटा को संसाधित करने के लिए उपयोगी हो सकता है।


4
<form action="test.php" method="post">
                        ^^^^^^^^^^^^^

ठीक है, यह बेवकूफी थी और मैं खुद को सार्वजनिक रूप से शर्मिंदा करूंगा, लेकिन मैंने पीएचपी में कुछ के लिए एक छोटी सी परीक्षा स्क्रिप्ट को खटखटाया और जब मेरा $_POSTसरणी खाली था, तो StackOverflow पहला स्थान है जिसे मैंने देखा और मुझे वह उत्तर नहीं मिला जिसकी मुझे आवश्यकता थी। ।

मैंने ही लिखा था

<form action="test.php">

और होने के नाते विधि निर्दिष्ट करना भूल गया POST!

मुझे यकीन है कि कोई व्यक्ति चुगली करेगा, लेकिन अगर यह किसी और को मदद करता है जो एक ही काम करता है, तो मुझे कोई आपत्ति नहीं है! हम सभी इसे समय-समय पर करते हैं!


मैं विश्वास नहीं कर सकता कि यह भी भूल गया! मैं सिर्फ एक नया सर्वर आज़मा रहा हूं, और यह सोचा कि कॉन्फ़िगरेशन के कारण कुछ था ... वैसे भी, अनुस्मारक के लिए धन्यवाद!
शमूएल आयला फ़ेरेरा

4

मेरे मामले में, HTTP से HTTPS में पोस्ट करते समय, $ _POST खाली आता है। समस्या यह थी, कि फॉर्म में इस तरह की कार्रवाई थी //example.com जब मैंने url को https://example.com पर फिक्स किया , तो समस्या गायब हो गई।


1
मुझे लगता है कि सर्वर सेटअप कैसे है, इस पर कुछ संबंधित है। मैं एक मेजबान के रूप में GoDaddy का उपयोग करते हुए एक ही मुद्दे पर हूं। इस समाधान से समस्या हल नहीं हुई।
एक्रेलस्टीन

इस समाधान से मेरी समस्या हल हो गई। मैं एक अच्छा सिर दर्द था।
गोकितासिर

3

यहाँ एक ही मुद्दा!

मैं पोस्टमैन में पोस्ट अनुरोध के माध्यम से अपने स्थानीय सर्वर कोड से कनेक्ट करने की कोशिश कर रहा था, और इस समस्या ने मेरा समय बर्बाद कर दिया!

स्थानीय परियोजना का उपयोग करने वाले किसी भी व्यक्ति के लिए (जैसे डाकिया): "लोकलहोस्ट" कीवर्ड के बजाय अपने आईपीवी 4 एड्रेस (सीएमडी में टाइप करें ipconfig) का उपयोग करें। मेरे मामले में:

इससे पहले:

localhost/app/login

उपरांत:

192.168.1.101/app/login

पोस्टमैन ने मुझे स्क्रैप किए गए मानों के साथ कुछ मुद्दे दिए हैं जिनमें उद्धरण चिह्न या स्थान हैं। यह एक विशिष्ट प्रारूप की अपेक्षा करता है।
टॉम एंडरसन

2

संदर्भ: http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

पोस्ट विधि

हम कुछ संशोधन करने जा रहे हैं ताकि अनुरोध भेजते समय POST विधि का उपयोग किया जाएगा ...

var url = "get_data.php";
var params = "lorem=ipsum&name=binny";
http.open("POST", url, true);

//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {//Call a function when the state changes.
  if(http.readyState == 4 && http.status == 200) {
    alert(http.responseText);
  }
}
http.send(params);

कुछ http हेडर किसी भी POST अनुरोध के साथ सेट किए जाने चाहिए। तो हम उन्हें इन लाइनों में सेट करते हैं ...

http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

उपरोक्त पंक्तियों के साथ हम मूल रूप से कह रहे हैं कि डेटा भेजें एक फॉर्म सबमिशन के प्रारूप में है। हम जो पैरामीटर भेज रहे हैं उसकी लंबाई भी देते हैं।

http.onreadystatechange = function() {//Call a function when the state changes.
  if(http.readyState == 4 && http.status == 200) {
    alert(http.responseText);
  }
}

हमने 'रेडी स्टेट' परिवर्तन कार्यक्रम के लिए एक हैंडलर सेट किया। यह वही हैंडलर है जिसका उपयोग हमने GET विधि के लिए किया था। आप यहां http.responseText का उपयोग कर सकते हैं - इनरएचटीएमएल (एएचएएच) का उपयोग करते हुए एक div में डालें, इसे (JSON) या किसी और चीज से बाहर निकालें।

http.send(params);

अंत में, हम अनुरोध के साथ पैरामीटर भेजते हैं। इस लाइन को कहा जाने के बाद ही दिए गए url को लोड किया जाता है। GET विधि में, पैरामीटर एक शून्य मान होगा। लेकिन POST विधि में, भेजे जाने वाले डेटा को सेंड फंक्शन के तर्क के रूप में भेजा जाएगा। दूसरी पंक्ति में परमर्स वैरिएबल घोषित किया गया था lorem=ipsum&name=binny- इसलिए हम दो मापदंडों - 'लोरेम' और 'नाम' को क्रमशः 'इप्सम' और 'बिन्नी' के साथ भेजते हैं।


1

मेरे मामले में ऐसा इसलिए था क्योंकि मैं फॉर्म जमा करने के लिए jQuery का उपयोग करने से पहले पृष्ठ पर सभी इनपुट को अक्षम करने के लिए jQuery का उपयोग कर रहा था। इसलिए मैंने अपने "हर इनपुट को यहां तक ​​कि 'छिपे हुए' प्रकारों को अक्षम कर दिया:"

$(":input").attr("disabled","disabled"); 

"केवल 'बटन' प्रकार इनपुट को निष्क्रिय करने के लिए":

$('input[type=button]').attr('disabled',true);

ऐसा था इसलिए उपयोगकर्ता दो बार गलती से 'गो' बटन को हिट नहीं कर सका और हमारे DB को ऊपर ले गया! ऐसा लगता है कि यदि आप 'अक्षम' विशेषता को 'छिपे हुए' प्रकार के इनपुट पर डालते हैं, तो उनके मानों को फ़ॉर्म सबमिट होने पर नहीं भेजा जाएगा!


1

मेरे लिए, .htaccess को पुनर्निर्देशित किया जा रहा था जब mod_rewrite स्थापित नहीं था। Mod_rewite स्थापित करें और सब ठीक है।

विशेष रूप से:

<IfModule !mod_rewrite.c>
  ErrorDocument 404 /index.php
</Ifmodule>

निष्पादित कर रहा था।


1

मैंने इसी तरह की समस्या को ठीक करने के लिए घंटों बिताए। मेरे मामले में समस्या यह थी

max_input_vars = "1000"

डिफ़ॉल्ट रूप से, php.ini में। मेरे पास अपलोड के बिना एक बहुत बड़ा रूप था। php.ini अपलोड करने के लिए तैयार है__ax_filesize = "100M" और post_max_size = "108M" और यह निश्चित रूप से मेरे मामले में मुद्दा नहीं था। PHP का व्यवहार max_input_vars के लिए समान है जब यह फ़ॉर्म में 1000 चर से अधिक होता है। यह रिटर्न और खाली _POST सरणी देता है। काश कि मैं एक घंटे पहले, और घंटों पहले मिल पाता।


1

मुझे पता है कि यह पुराना है, लेकिन मेरे समाधान को साझा करना चाहता था।

मेरे मामले में मुद्दा मेरे .htaccess में था क्योंकि मैंने अपने PHP की अधिकतम अपलोड सीमा बढ़ाने के लिए चर जोड़े थे। मेरा कोड इस तरह था:

php_value post_max_size 50MB
php_value upload_max_filesize 50MB

बाद में मैंने नोटिस किया कि मानों को xxM की तरह नहीं xxMB चाहिए और जब मैंने इसे इसमें बदला:

php_value post_max_size 50M
php_value upload_max_filesize 50M

अब मेरे $ _POST ने पहले की तरह डेटा वापस कर दिया। आशा है कि यह भविष्य में किसी की मदद करेगा।


0

MRMage की पोस्ट के अलावा:

मुझे इस चर को इस समस्या को हल करने के लिए सेट करना पड़ा कि कुछ $_POSTचर (एक बड़े सरणी के साथ> 1000 आइटम) गायब हो गए:

suhosin.request.max_vars = 2500

" request", "नहीं" postसमाधान था ...


0

संभवत: सबसे सुविधाजनक समाधान नहीं है, लेकिन मुझे यह समझ में आया कि यदि मैंने actionरूट विशेषता को रूट डोमेन पर सेट किया है , तो index.php तक पहुँचा जा सकता है और पोस्ट किए गए चर प्राप्त कर सकते हैं। हालाँकि अगर मैं फिर से लिखे गए URL को कार्रवाई के रूप में सेट करता हूं, तो यह काम नहीं करता है।


0

यह @sarar ने जैसा कहा वैसा ही है ।

लेकिन मैं अपने आपी को सामान पोस्ट करने की कोशिश कर रहा था, में स्थित है site/api/index.php, केवल पोस्टिंग के site/apiबाद से यह index.phpअपने आप से गुजरता है। हालांकि, यह स्पष्ट रूप से गड़बड़ करने के लिए कुछ कारण है, क्योंकि मेरे $_POSTउड़ने पर खाली हो गया। बस सीधे पोस्ट करने के site/api/index.phpबजाय इसे हल किया।


0

मेरी समस्या यह थी कि मैं <base>अपनी परीक्षण साइट के आधार URL को बदलने के लिए HTML टैग का उपयोग कर रहा था । एक बार जब मैंने हेडर से उस टैग को हटा दिया, तो $_POSTडेटा वापस आ गया।


0

मेरे मामले में (ओवीएच म्यूचुअलिस सर्वर पर पीएचपी पेज) enctype="text/plain"काम नहीं करता है ( $_POSTऔर इसी $_REQUESTखाली है), काम के नीचे अन्य उदाहरण। `

<form action="?" method="post">
<!-- in this case, my google chrome 45.0.2454.101 uses -->
<!--     Content-Type:application/x-www-form-urlencoded -->
    <input name="say" value="Hi">
    <button>Send my greetings</button>
</form>

<form action="?" method="post" enctype="application/x-www-form-urlencoded">
    <input name="say" value="Hi">
    <button>Send my application/x-www-form-urlencoded greetings</button>
</form>

<form action="?" method="post"  enctype="multipart/form-data">
    <input name="say" value="Hi">
    <button>Send my multipart/form-data greetings</button>
</form>

<form action="?" method="post" enctype="text/plain"><!-- not working -->
    <input name="say" value="Hi">
    <button>Send my text/plain greetings</button>
</form>

`

यहाँ अधिक: विधि = "पद" enctype = "पाठ / सादा" संगत नहीं हैं?


0

मुझे मॉड सुरक्षा से निम्नलिखित त्रुटि मिल रही थी:

Access denied with code 500 (phase 2). Pattern match "((select|grant|delete|insert|drop|alter|replace|truncate|update|create|rename|describe)[[:space:]]+[A-Z|a-z|0-9|\*| |\,]+[[:space:]]+(from|into|table|database|index|view)[[:space:]]+[A-Z|a-z|0-9|\*| |\,]|UNION SELECT.*\'.*\'.*,[0-9].*INTO.*FROM)" at REQUEST_BODY. [file "/usr/local/apache/conf/modsec2.user.conf"] [line "345"] [id "300013"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"]

एक बार जब मैंने परीक्षण करने के लिए अपने मॉड सुरक्षा कॉन्फ़िगरेशन को हटा दिया, तो यह सभी उम्मीद के मुताबिक काम किया। अब मुझे अपनी आवश्यकताओं के लिए सुरक्षित लेकिन लचीले रहने के लिए अपने नियमों को संशोधित करने की आवश्यकता है :)


0

सुनिश्चित करें कि आप नाम = " your_variable_name " का उपयोग करते हैं इनपुट टैग में " का ।

मैं गलती से आईडी = " your_variable_name " का उपयोग करता हूं " का ।

मैंने बग को पकड़ने के लिए बहुत समय बिताया।


0

सुनिश्चित करें कि name प्रत्येक क्षेत्र संपत्ति परिभाषित है।

यह आपको PHP पर एक खाली POST बनाता है

<input type="text" id="Phone">

लेकिन, यह काम करेगा

<input type="text" name="Phone" id="Phone">

मुझे लगता है कि सर्वर सेटअप कैसे है, इस पर कुछ संबंधित है। मैं एक मेजबान के रूप में GoDaddy का उपयोग करते हुए एक ही मुद्दे पर हूं। इस समाधान से समस्या हल नहीं हुई।
एक्रेलस्टीन

-1

ठीक है, मैंने सोचा कि मुझे अपना मामला यहाँ डाल देना चाहिए .... मुझे विशिष्ट मामलों में पोस्ट सरणी खाली मिल रही थी .. फ़ॉर्म अच्छा काम करता है, लेकिन कुछ बार उपयोगकर्ताओं को शिकायत होती है कि वे सबमिट बटन दबाते हैं, और कुछ भी नहीं होता है ...। थोड़ी देर के लिए खुदाई करने के बाद, मुझे पता चला कि मेरी होस्टिंग कंपनी के पास एक सुरक्षा मॉड्यूल है जो उपयोगकर्ताओं के इनपुटों की जांच करता है और यदि यह पता चलता है तो पूरे पोस्ट सरणी (न केवल दुर्भावनापूर्ण डेटा) को साफ करता है। मेरे उदाहरण में, एक गणित शिक्षक समीकरण में प्रवेश करने की कोशिश कर रहा था: डाई + डीएक्स + ० = ०; और डेटा को पूरी तरह से मिटा दिया गया था।

इसे ठीक करने के लिए, मैं उसे अभी पाठ क्षेत्र में डेटा को डाई + डीएक्स + 0 = शून्य के रूप में दर्ज करने की सलाह देता हूं, और अब यह काम करता है .... यह किसी को कुछ समय बचा सकता है ।।


5
उपयोगकर्ताओं को दोषपूर्ण कोड के लिए भत्ते बनाने के लिए कहना एक गैर-स्टार्टर है।
22

यह वास्तव में दोषपूर्ण कोड नहीं है, लेकिन आप एक नए होस्टिंग प्रदाता पर विचार कर सकते हैं। वैकल्पिक रूप से इनपुट को एक अलग रूप में पोस्ट करें, जैसे HTML URL एन्कोडिंग।
टॉम एंडरसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.