পিএইচপি "পিএইচপি: // ইনপুট" বনাম _P _POST


243

জিকুয়ারি থেকে অ্যাজাক্স অনুরোধের সাথে ইন্টারঅ্যাক্ট করার php://inputপরিবর্তে আমাকে পদ্ধতিটি ব্যবহার করার নির্দেশনা দেওয়া হয়েছে $_POST। আমি যা বুঝতে পারি না তা হ'ল এটির বনাম $_POSTবা এর বৈশ্বিক পদ্ধতি ব্যবহার করার সুবিধা $_GET


2
এই পোস্টটিতে হোঁচট খাওয়ার আগে এবং এর দুর্দান্ত উত্তরগুলি পড়ার আগে আমি পিএইচপি পক্ষের এজ্যাক্স কল পাওয়ার জন্য "হ্যাকস" ব্যবহার করতাম! ভবিষ্যতে একই সমস্যাযুক্ত অন্যান্য ব্যক্তিদের জন্য, আমি আশা করি অনুসন্ধান ইঞ্জিনগুলিও আমার মন্তব্যটি পড়বে! :)
অ্যাডারচক্স

উত্তর:


484

কারণটি হ'ল php://inputঅনুরোধের এইচটিটিপি-শিরোনামের পরে সমস্ত কাঁচা তথ্য ফেরত দেয়, সামগ্রীর প্রকার নির্বিশেষে।

পিএইচপি superglobal হয় $_POST, শুধুমাত্র অনুমিত হয় মোড়ানো ডেটা রয়েছে যা হয়

  • application/x-www-form-urlencoded (সাধারণ ফর্ম-পোস্টগুলির জন্য মানক সামগ্রীর ধরণ) বা
  • multipart/form-data (বেশিরভাগ ফাইল আপলোডের জন্য ব্যবহৃত হয়)

এর কারণ এটি কেবলমাত্র সামগ্রী ধরণের যা ব্যবহারকারী এজেন্টদের দ্বারা সমর্থিত হওয়া উচিত । সুতরাং সার্ভার এবং পিএইচপি traditionতিহ্যগতভাবে অন্য কোনও সামগ্রীর প্রকারের প্রত্যাশা করবেন না (যার অর্থ এই নয় যে তারা পারবেন না)।

সুতরাং, যদি আপনি কেবল একটি ভাল পুরানো এইচটিএমএল পোস্ট করেন form, অনুরোধটি এরকম কিছু দেখায়:

POST /page.php HTTP/1.1

key1=value1&key2=value2&key3=value3

তবে আপনি যদি আজাক্সের সাথে অনেক বেশি কাজ করছেন, তবে এই পরীক্ষার মধ্যে প্রকারের (স্ট্রিং, ইন্ট, বুল) এবং স্ট্রাকচার (অ্যারে, অবজেক্টস) সহ আরও জটিল তথ্য আদান-প্রদান করা রয়েছে, তাই বেশিরভাগ ক্ষেত্রে জেএসএনই সেরা পছন্দ choice তবে জেএসএন-পে-লোডের সাথে একটি অনুরোধটি এরকম কিছু দেখাচ্ছে:

POST /page.php HTTP/1.1

{"key1":"value1","key2":"value2","key3":"value3"}

বিষয়বস্তুটি এখন হবে application/json(বা উপরে উল্লিখিতগুলির মধ্যে অন্তত কোনও নয়), সুতরাং পিএইচপি-র- $_POSTর্যাপার কীভাবে এটি পরিচালনা করতে পারে তা এখনও জানেন না (এখনও)।

তথ্য এখনও আছে, আপনি কেবল মোড়কের মাধ্যমে এটি অ্যাক্সেস করতে পারবেন না। সুতরাং আপনাকে এটিকে নিজেরাই কাঁচা ফর্ম্যাটে আনতে হবে file_get_contents('php://input')( যতক্ষণ না এটি multipart/form-dataএনকোডযুক্ত নয় )।

আপনি এক্সএমএল-ডেটা বা অন্য কোনও মানহীন সামগ্রীর ধরণের অ্যাক্সেসটিও এইভাবে পাবেন।


40
"এটি কীভাবে আপনি এক্সএমএল-ডেটা বা অন্য কোনও
মানহীন

@Quasdank আমি মেঘ (ইন পিএইচপি XAMPP সার্ভারে Android অ্যাপ্লিকেশন থেকে তাদেরকে JSON পাঠাচ্ছি stackoverflow.com/questions/36558261/... ) কিন্তু আমি এটা কাজ পাই নি আমি যখন file_get_contents চেষ্টা ( 'পিএইচপি: // ইনপুট'), যা কেবল স্ট্রিং (0) প্রদান করে। এটি আমার লোকাল মেশিনে কাজ করত তবে যখন আমি এটি মেঘে স্থাপন করি তখন এটি কাজ করে না। তুমি আমাকে সাহায্য করতে পারবে কি?
দ্য_মার্টিয়ান

1
এটি লক্ষণীয় যে পিএইচপি-র কাছে একটি এজেএক্স অনুরোধে XMLHttpRequest অবজেক্টের ব্যবহারের অর্থ এই নয় যে একজনকে অবশ্যই JSON পোস্ট করতে হবে। এটি অতিরিক্ত ওভারহেড, তবে আপনার ক্লায়েন্ট-পাশের জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন / x-www-form-urlencoded ফর্ম্যাটে রূপান্তর করতে পারে। তবে অনুবাদটি ডেটাটাইপ বিশুদ্ধ হতে পারে না ।
অ্যান্টনি রুটলেজ

এটি বলা দরকার যে দুটি স্বীকৃত সামগ্রী-প্রকারের সীমাটি মূলত historicalতিহাসিক। অ্যারে application/jsonজন্য বৈধ ডেটা উত্স হিসাবে অর্থাত পিএইচপি থামাতে কিছুই থামায় না $_POST। এমনকি সেখানে বিশেষত সমর্থনটির জন্য প্রকাশিত অনুরোধগুলিও রয়েছে।
আনারডেমন

হাই @ কোয়াসডঙ্ক আপনি দয়া করে আমাকে এই ম্যাজেন্টো.স্ট্যাকেক্সেঞ্জঞ্জ
প্রশ্ন /

53

php://inputআপনাকে ডেটার কাঁচা বাইট দিতে পারে। পোস্টড ডেটা যদি কোনও জেএসএন এনকোডেড কাঠামো হয় তবে এটি একটি অ্যাজাক্স পোস্টের অনুরোধের জন্য প্রায়শই হয় This

এটি করতে এখানে একটি ফাংশন রয়েছে:

  /**
   * Returns the JSON encoded POST data, if any, as an object.
   * 
   * @return Object|null
   */
  private function retrieveJsonPostData()
  {
    // get the raw POST data
    $rawData = file_get_contents("php://input");

    // this returns null if not valid json
    return json_decode($rawData);
  }

$_POSTযখন আপনি একটি ফর্ম, একটি ঐতিহ্যগত পোস্ট দ্বারা জমা কী-ভ্যালু ডাটা হ্যান্ডলিং করছি অ্যারের আরো দরকারী। এটি কেবল তখনই কাজ করে যদি পোস্টড ডেটা একটি স্বীকৃত ফর্ম্যাটে থাকে, সাধারণত application/x-www-form-urlencoded( বিশদের জন্য http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4 দেখুন)।


7
এটি লক্ষণীয় যে আপনি যদি trueদ্বিতীয় প্যারামিটার হিসাবে পাস করেন তবে json_decodeএটি একটি সহযোগী অ্যারে ফিরিয়ে দেবে।
ওয়াহিদ আমিরি

28

পোস্টের ডেটা যদি ত্রুটিযুক্ত হয় তবে $ _POST তে কোনও কিছুই থাকবে না। তবুও, পিএইচপি: // ইনপুটটিতে ত্রুটিযুক্ত স্ট্রিং থাকবে।

উদাহরণস্বরূপ কিছু এজাক্স অ্যাপ্লিকেশন রয়েছে, যেগুলি কোনও ফাইল আপলোড করার জন্য সঠিক পোস্ট কী-মান ক্রম তৈরি করে না এবং কেবলমাত্র সমস্ত ফাইল ফাইলের ডেটা হিসাবে ভেরিয়েবলের নাম বা কিছুই ছাড়াই ডাম্প করে। $ _POST খালি থাকবে, $ _FILES খালিও হবে এবং পিএইচপি: // ইনপুটটিতে স্ট্রিং হিসাবে লিখিত সঠিক ফাইল থাকবে।


22

প্রথমত, পিএইচপি সম্পর্কে একটি প্রাথমিক সত্য।

পিএইচপি আপনাকে এইচটিটিপি অনুরোধগুলি পরিচালনা করার জন্য ইন্টারফেসের মতো খাঁটি বিশ্রাম (জিইটি, পোষ্ট, পুট, প্যাচ, ডিলেট) মুছে ফেলার জন্য ডিজাইন করা হয়নি

যাইহোক, $_POST, $_GET, এবং $_FILES superglobals , এবং ফাংশন filter_input_array()গড় ব্যক্তির / layman এর প্রয়োজনের জন্য খুব দরকারী।

$_POST(এবং $_GET) এর এক নম্বর গোপন সুবিধাটি হল যে আপনার ইনপুট ডেটা পিএইচপি দ্বারা স্বয়ংক্রিয়ভাবে urldecoded হয় । আপনি এটি করার কথা কখনও ভাবেন না, বিশেষত স্ট্যান্ডার্ড জিইটি অনুরোধের মধ্যে স্ট্রিং প্যারামিটারগুলির জন্য।

তবে, আপনি আরও শিখুন ...

বলা হচ্ছে, আপনি যখন আপনার প্রোগ্রামিং জ্ঞানের দিকে এগিয়ে যান এবং জাভাস্ক্রিপ্টের XmlHttpRequestঅবজেক্ট (কারও জন্য jQuery) ব্যবহার করতে চান , আপনি এই স্কিমের সীমাবদ্ধতা দেখতে এসেছেন।

$_POSTআপনাকে HTTP Content-Typeশিরোনামে দুটি মিডিয়া ধরণের ব্যবহার সীমাবদ্ধ করে :

  1. application/x-www-form-urlencoded, এবং
  2. multipart/form-data

সুতরাং, আপনি যদি সার্ভারে পিএইচপি-তে ডেটা মানগুলি প্রেরণ করতে চান এবং এটি $_POSTসুপারগ্লোবালটিতে প্রদর্শিত হতে চান , তবে আপনাকে অবশ্যই এটি ক্লায়েন্ট-সাইডে প্রবিষ্ট করতে হবে এবং কী / মান জোড়া হিসাবে ডাটারগুলি প্রেরণ করতে হবে - নবীনদের জন্য অসুবিধাপূর্ণ পদক্ষেপ (বিশেষত ইউআরএল-এর বিভিন্ন অংশের বিভিন্ন ধরণের ইউরেলকোডিংয়ের প্রয়োজন আছে: সাধারণ, কাঁচা ইত্যাদি figure

আপনার সমস্ত jQuery ব্যবহারকারীর জন্য, $.ajax()পদ্ধতিটি আপনার JSON কে সার্ভারে ট্রান্সমিশনের আগে URL এনকোডেড কী / মান জোড়গুলিতে রূপান্তর করছে। আপনি সেট করে এই আচরণটি ওভাররাইড করতে পারেন processData: false। কেবলমাত্র aj .axax () ডকুমেন্টেশনটি পড়ুন এবং কন্টেন্ট-টাইপ শিরোনামে সঠিক মিডিয়া প্রকারটি প্রেরণ করতে ভুলবেন না।

ইউআরএল এনকোডিং? কি হ্যাক !!! ???

সাধারণত, আপনি যদি কোনও সাধারণ, সিঙ্ক্রোনাস করছেন (পুরো পৃষ্ঠাটি পুনরায় চিত্রিত করা হয়) যখন এইচটিএমএল ফর্মের সাথে এইচটিটিপি অনুরোধ করে, ব্যবহারকারী-এজেন্ট (ওয়েব ব্রাউজার) আপনার জন্য আপনার ফর্ম ডেটা ইউলিনকোড করবে। যদি আপনি এই XmlHttpRequestঅবজেক্টটি ব্যবহার করে একটি অ্যাসিঙ্ক্রোনাস এইচটিটিপি অনুরোধ করতে চান , তবে আপনাকে অবশ্যই একটি অবরুদ্ধ কোডিং স্ট্রিংটি ফ্যাশন করতে হবে এবং প্রেরণ করতে হবে, যদি আপনি সেই ডেটা $_POSTসুপারগ্লোবালটিতে প্রদর্শিত হতে চান

জাভাস্ক্রিপ্টের সাথে আপনি কীভাবে যোগাযোগ করছেন? :-)

একটি জাভাস্ক্রিপ্ট অ্যারে বা অবজেক্টকে একটি urlncoded স্ট্রিংয়ে রূপান্তর করা অনেক বিকাশকারীকে বিরক্ত করে (এমনকি ফর্ম ডেটার মতো নতুন এপিআই সহ )। তারা বরং বরং জেএসএন পাঠাতে সক্ষম হবেন এবং ক্লায়েন্ট কোডটি এটি করা আরও কার্যকর হবে।

মনে রাখবেন (উইঙ্ক, উইঙ্ক), গড় ওয়েব ডেভেলপার XmlHttpRequestসরাসরি অবজেক্টটি, গ্লোবাল ফাংশন, স্ট্রিং ফাংশন, অ্যারে ফাংশন এবং আপনার এবং আমি মতো নিয়মিত এক্সপ্রেশন ;-) ব্যবহার করতে শেখে না । তাদের জন্য ইউরলিনকোডিং একটি দুঃস্বপ্ন। ;-)

পিএইচপি, কি দেয়?

পিএইচপি-র স্বজ্ঞাত এক্সএমএল এবং জেএসএন হ্যান্ডলিংয়ের অভাব অনেক লোককে সরিয়ে দেয়। আপনি ভাবেন যে এটি এখন (দীর্ঘশ্বাস) দ্বারা পিএইচপি এর অংশ হয়ে যাবে।

অনেকগুলি মিডিয়া প্রকার (অতীতে মাইমির প্রকারগুলি)

এক্সএমএল, জেএসন, এবং ওয়াইএএমএল সবার মিডিয়া প্রকার রয়েছে যা এইচটিটিপি Content-Typeশিরোনামে রাখা যেতে পারে ।

  • আবেদন / XML
  • applicaiton / JSON
  • অ্যাপ্লিকেশন / ইয়ামল (যদিও আইএএনএর কোনও অফিসিয়াল উপাধি তালিকাভুক্ত নেই)

দেখ কত মিডিয়া-ধরনের (পূর্বে, MIME প্রকারসমূহ) IANA দ্বারা সংজ্ঞায়িত করা হয়।

কতটি HTTP শিরোনাম রয়েছে তা দেখুন।

পিএইচপি: // ইনপুট বা বস্ট

php://inputস্ট্রিমটি ব্যবহার করে আপনাকে পিএইচপি বিশ্বজুড়ে বাধ্য করেছে এমন বাচ্চা বসা / হাত ধরে থাকা বিমূর্ততার স্তরকে ছিন্ন করতে দেয়। :-) মহান শক্তি দিয়ে মহান দায়িত্ব আসে!

এখন, আপনি স্ট্রিমযুক্ত ডেটা মানগুলির সাথে ডিল করার আগে আপনার php://inputকয়েকটি জিনিস করা উচিত / তা করা উচিত।

  1. সঠিক HTTP পদ্ধতিটি নির্দেশিত হয়েছে কিনা তা নির্ধারণ করুন (GET, POST, PUT, PATCH, DELETE, ...)
  2. এইচটিটিপি কনটেন্ট-টাইপ শিরোনাম সংক্রমণ হয়েছে কিনা তা নির্ধারণ করুন ।
  3. সামগ্রী-প্রকারের মানটি পছন্দসই মিডিয়া টাইপ কিনা তা নির্ধারণ করুন ।
  4. প্রেরিত ডেটাগুলি XML / JSON / YMAL / ইত্যাদি সঠিকভাবে গঠিত কিনা তা নির্ধারণ করুন
  5. প্রয়োজনে ডেটাটিকে পিএইচপি ডেটাটাইপে রূপান্তর করুন : অ্যারে বা অবজেক্ট।
  6. যদি এর মধ্যে কোনও বেসিক চেক বা রূপান্তর ব্যর্থ হয় তবে একটি ব্যতিক্রম ছুঁড়ে দিন !

চরিত্রের এনকোডিংয়ের কী হবে?

এএইচ, এইচএ! হ্যাঁ, আপনি আপনার অ্যাপ্লিকেশনটিতে প্রবাহিত ডেটা স্ট্রিমটি ইউটিএফ -8 এনকোড করাতে চাইতে পারেন, তবে এটি কী না আপনি কীভাবে জানতে পারবেন?

দুটি সমালোচনামূলক সমস্যা।

  1. আপনি কতটা ডেটা দিয়ে আসছেন তা জানেন না php://input
  2. আপনি তথ্য স্ট্রিমের বর্তমান এনকোডিংয়ের জন্য জানেন না।

আপনি প্রথমে কত আছে তা না জেনে স্ট্রিম ডেটা হ্যান্ডেল করার চেষ্টা করছেন? এটি একটি ভয়ানক ধারণাContent-Lengthপ্রবাহিত ইনপুট আকারের দিকনির্দেশনার জন্য আপনি এইচটিটিপি শিরোনামের উপর একচেটিয়া নির্ভর করতে পারবেন না কারণ এটি স্পোফ করা যেতে পারে।

আপনার একটি প্রয়োজন হবে:

  1. স্ট্রিম আকার সনাক্তকরণ অ্যালগরিদম।
  2. অ্যাপ্লিকেশন সংজ্ঞায়িত স্ট্রিম আকার সীমা (অ্যাপাচি / এনগিনেক্স / পিএইচপি সীমাবদ্ধতা খুব বিস্তৃত হতে পারে)।

আপনি কি স্ট্রিমের বর্তমান এনকোডিং না জেনে স্ট্রিম ডেটা ইউটিএফ -8 এ রূপান্তর করার চেষ্টা করছেন? কিভাবে? আইকনভ স্ট্রিম ফিল্টার ( আইকনভি স্ট্রিম ফিল্টার উদাহরণ ) এর মতো একটি শুরু এবং শেষ এনকোডিং চাইছে।

'convert.iconv.ISO-8859-1/UTF-8'

সুতরাং, আপনি যদি বিবেকবান হন তবে আপনার প্রয়োজন হবে:

  1. স্ট্রিম এনকোডিং সনাক্তকরণ অ্যালগরিদম।
  2. গতিশীল / রানটাইম স্ট্রিম ফিল্টার সংজ্ঞা অ্যালগরিদম (কারণ আপনি প্রারম্ভিক এনকোডিং শুরু করতে পারবেন না)।

( আপডেট : 'convert.iconv.UTF-8/UTF-8'সবকিছুকে ইউটিএফ -8 এ বাধ্য করবে, তবে আপনার এখনও এমন অক্ষরের জন্য অ্যাকাউন্ট করতে হবে যা আইকনভি লাইব্রেরি অনুবাদ করতে পারে না তা হয়ত বুঝতে পারে other অন্য কথায়, কোনও অক্ষর অনুবাদ করা যায় না, তখন আপনাকে কী পদক্ষেপ নিতে হবে তা আপনাকে কিছু সংজ্ঞা দিতে হবে : 1) একটি ডামি চরিত্র sertোকান, 2) ব্যর্থ / নিক্ষেপ এবং ব্যতিক্রম)।

আপনি HTTP Content-Encodingশিরোনামের উপর একচেটিয়াভাবে নির্ভর করতে পারবেন না , কারণ এটি নিম্নলিখিত হিসাবে সংকোচনের মতো কিছু নির্দেশ করতে পারে। আইকনভের ক্ষেত্রে আপনি যে সিদ্ধান্ত নিতে চান তা এই নয়।

Content-Encoding: gzip

সুতরাং, সাধারণ পদক্ষেপগুলি হতে পারে ...

প্রথম খণ্ড: এইচটিটিপি অনুরোধ সম্পর্কিত

  1. সঠিক HTTP পদ্ধতিটি নির্দেশিত হয়েছে কিনা তা নির্ধারণ করুন (GET, POST, PUT, PATCH, DELETE, ...)
  2. এইচটিটিপি কনটেন্ট-টাইপ শিরোনাম সংক্রমণ হয়েছে কিনা তা নির্ধারণ করুন ।
  3. সামগ্রী-প্রকারের মানটি পছন্দসই মিডিয়া টাইপ কিনা তা নির্ধারণ করুন ।

দ্বিতীয় খণ্ড: স্ট্রিম সম্পর্কিত তথ্য

  1. ইনপুট স্ট্রিমের আকার নির্ধারণ করুন (,চ্ছিক, তবে প্রস্তাবিত)।
  2. ইনপুট স্ট্রিমের এনকোডিং নির্ধারণ করুন।
  3. প্রয়োজনে ইনপুট স্ট্রিমটিকে কাঙ্ক্ষিত অক্ষর এনকোডিং (UTF-8) এ রূপান্তর করুন।
  4. প্রয়োজনে যেকোন অ্যাপ্লিকেশন স্তরের সংক্ষেপণ বা এনক্রিপশনকে বিপরীত করুন এবং তারপরে 4, 5 এবং 6 পদক্ষেপ পুনরাবৃত্তি করুন।

তৃতীয় অংশ: ডেটা টাইপ সম্পর্কিত

  1. প্রেরিত ডেটাগুলি XML / JSON / YMAL / ইত্যাদি সঠিকভাবে গঠিত কিনা তা নির্ধারণ করুন

(মনে রাখবেন, ডেটা এখনও একটি ইউআরএল এনকোডযুক্ত স্ট্রিং হতে পারে যা আপনাকে অবশ্যই বিশ্লেষণ এবং ইউআরএল ডিকোড করতে হবে)।

  1. প্রয়োজনে ডেটাটিকে পিএইচপি ডেটাটাইপে রূপান্তর করুন : অ্যারে বা অবজেক্ট।

খণ্ড IV: ডেটা মান সম্পর্কিত

  1. ফিল্টার ইনপুট ডেটা।

  2. ইনপুট ডেটা বৈধ করুন।

এখন দেখেন তো?

$_POSTSuperglobal হয়, ইনপুট সীমা জন্য php.ini সেটিংস সহ, সাধারণ লোক জন্য সহজ হয়। তবে, স্ট্রিমগুলি ব্যবহার করার সময় অক্ষর এনকোডিংয়ের সাথে কাজ করা অনেক বেশি স্বজ্ঞাত এবং দক্ষ because


1
কি শান্তি! এই উত্তরের অনেক বেশি রেটিং থাকা উচিত। অন্ধকারে বন্যার আলো আনার জন্য আপনাকে অনেক ধন্যবাদ।
লক্স

চূড়ান্ত বিশ্লেষণে, পিএইচপি বেস ডিফল্টগুলি আপডেট করার জন্য ভাল করবে। তবে একই নামের ডেটা স্ট্রাকচার ($ _GET, $ _POST) সহ একটি এইচটিটিপি অনুরোধ পদ্ধতিটি যুক্ত করা যৌক্তিকভাবে ভুল। যা গুরুত্বপূর্ণ তা হ'ল (১) পছন্দসই এইচটিটিপি অনুরোধ পদ্ধতি এবং (২) সেখানে সেই অনুরোধের সাথে ডেটা অনুরোধের ডেটা (বিষয়বস্তুর ধরণ) রয়েছে। পার্লের মতো আপনিও দেখতে পাচ্ছেন যে আপনি ভাষা নির্মাতাদের / রক্ষণাবেক্ষণকারীদের মতামতের ইচ্ছার শিকার হতে পারেন be
অ্যান্টনি রুটলেজ

0

সুতরাং আমি একটি ফাংশন লিখেছি যা পিএইচপি: // ইনপুট স্ট্রিম থেকে পোষ্ট ডেটা পাবে ।

সুতরাং এখানে চ্যালেঞ্জটি পুট, ডিলিট বা প্যাচ অনুরোধের পদ্ধতিতে স্যুইচ করা ছিল এবং এখনও সেই অনুরোধের সাথে প্রেরিত পোস্ট ডেটা প্রাপ্ত করে।

আমি সম্ভবত এটি একই চ্যালেঞ্জের কারও সাথে ভাগ করে নিচ্ছি। নীচের ফাংশনটি হ'ল আমি কী নিয়ে এসেছি এবং এটি কাজ করে। আমি আসা করি এটা সাহায্য করবে!

    /**
     * @method Post getPostData
     * @return array
     * 
     * Convert Content-Disposition to a post data
     */
    function getPostData() : array
    {
        // @var string $input
        $input = file_get_contents('php://input');

        // continue if $_POST is empty
        if (strlen($input) > 0 && count($_POST) == 0 || count($_POST) > 0) :

            $postsize = "---".sha1(strlen($input))."---";

            preg_match_all('/([-]{2,})([^\s]+)[\n|\s]{0,}/', $input, $match);

            // update input
            if (count($match) > 0) $input = preg_replace('/([-]{2,})([^\s]+)[\n|\s]{0,}/', '', $input);

            // extract the content-disposition
            preg_match_all("/(Content-Disposition: form-data; name=)+(.*)/m", $input, $matches);

            // let's get the keys
            if (count($matches) > 0 && count($matches[0]) > 0)
            {
                $keys = $matches[2];

                foreach ($keys as $index => $key) :
                    $key = trim($key);
                    $key = preg_replace('/^["]/','',$key);
                    $key = preg_replace('/["]$/','',$key);
                    $key = preg_replace('/[\s]/','',$key);
                    $keys[$index] = $key;
                endforeach;

                $input = preg_replace("/(Content-Disposition: form-data; name=)+(.*)/m", $postsize, $input);

                $input = preg_replace("/(Content-Length: )+([^\n]+)/im", '', $input);

                // now let's get key value
                $inputArr = explode($postsize, $input);

                // @var array $values
                $values = [];

                foreach ($inputArr as $index => $val) :
                    $val = preg_replace('/[\n]/','',$val);

                    if (preg_match('/[\S]/', $val)) $values[$index] = trim($val);

                endforeach;

                // now combine the key to the values
                $post = [];

                // @var array $value
                $value = [];

                // update value
                foreach ($values as $i => $val) $value[] = $val;

                // push to post
                foreach ($keys as $x => $key) $post[$key] = isset($value[$x]) ? $value[$x] : '';

                if (is_array($post)) :

                    $newPost = [];

                    foreach ($post as $key => $val) :

                        if (preg_match('/[\[]/', $key)) :

                            $k = substr($key, 0, strpos($key, '['));
                            $child = substr($key, strpos($key, '['));
                            $child = preg_replace('/[\[|\]]/','', $child);
                            $newPost[$k][$child] = $val;

                        else:

                            $newPost[$key] = $val;

                        endif;

                    endforeach;

                    $_POST = count($newPost) > 0 ? $newPost : $post;

                endif;
            }

        endif;

        // return post array
        return $_POST;
    }

-5

এটি কীভাবে ব্যবহার করা যায় তার সহজ উদাহরণ

 <?php  
     if(!isset($_POST) || empty($_POST)) { 
     ?> 
        <form name="form1" method="post" action=""> 
          <input type="text" name="textfield"><br /> 
          <input type="submit" name="Submit" value="submit"> 
        </form> 
   <?php  
        } else { 
        $example = file_get_contents("php://input");
        echo $example;  }  
   ?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.