2010-11-22 11 views
14

मैं कैसे जांच सकता हूं कि अनुरोध PHP में एक पोस्ट वापस है या नहीं, ठीक है?जांच कर रहा है कि अनुरोध PHP में वापस पोस्ट किया गया है

if (isset($_POST["submit"])) 

जहां submit<input type="submit" />

+0

क्या आप यह जांचना चाहते हैं कि 'पोस्ट' डेटा मौजूद है या नहीं, या' सबमिट 'डेटा मौजूद है या नहीं? – Ben

+0

एक पोस्ट के लिए जाँच या वापस पोस्ट? एक पोस्ट बैक एक विशेष प्रकार का पोस्ट अनुरोध है। –

+0

@Steve, @ Lèse majesté, मूल रूप से, मैं सिर्फ यह देखना चाहता हूं कि कोई फॉर्म वापस पोस्ट किया गया है, इसलिए मैं पोस्ट को –

उत्तर

22

का उपयोग भी कर सकते हैं यदि आप एक ही पृष्ठ पर ऐसे सबमिट बटन को जानते हैं और उम्मीद करते हैं तो यह काम करेगा।

if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') 

के रूप में टिप्पणी में कहा, विशेष रूप से एक postback और नहीं बस किसी भी जांच करने के लिए:

आप तुरंत के बारे में अनुरोध चर में कुछ भी पता नहीं है, तो एक और तरीका अनुरोध विधि की जाँच करने के लिए है POST अनुरोध, आपको यह सुनिश्चित करने की आवश्यकता है कि रेफरर प्रसंस्करण पृष्ठ के समान पृष्ठ है। कुछ ऐसा:

if (basename($_SERVER['HTTP_REFERER']) == $_SERVER['SCRIPT_NAME']) 
+1

आपको निश्चित रूप से '===' के बजाय '===' का उपयोग करना चाहिए।स्पष्टीकरण, क्यों, [इस उत्तर] (http://stackoverflow.com/a/1372163/1469208) और कई अन्य संसाधनों में टिप्पणियों में पाया जा सकता है, क्योंकि ये PHP प्रोग्रामिंग के मूलभूत सिद्धांत हैं। – trejder

3

की name है आप $_SERVER['REQUEST_METHOD'] == 'POST' चाहते हैं।

आपका बहुत ही समान है हालांकि this one से कम सामान्य प्रश्न है।

यह वास्तव में एक पोस्ट चर की जांच करने से बेहतर तरीका है। एक के लिए, आप नहीं जानते कि वह चर भेजा जाएगा या नहीं। मुझे लगता है कि कुछ ब्राउज़र निर्दिष्ट नहीं होने पर कुछ ब्राउज़र बस कुंजी नहीं भेजेंगे। साथ ही, मुझे चिंता होगी कि PHP के कुछ स्वाद $_POST को परिभाषित नहीं कर सकते हैं यदि कोई पोस्टेड मान नहीं है।

+0

आपको निश्चित रूप से '===' के बजाय '===' का उपयोग करना चाहिए। स्पष्टीकरण, क्यों, [इस उत्तर] (http://stackoverflow.com/a/1372163/1469208) और कई अन्य संसाधनों में टिप्पणियों में पाया जा सकता है, क्योंकि ये PHP प्रोग्रामिंग के मूलभूत सिद्धांत हैं। – trejder

1

हाँ, ऐसा करना चाहिए।

जब आप image प्रकार का उपयोग कर रहे हैं तो सावधान रहें, वे कुछ ब्राउज़र में name विशेषता नहीं भेजेंगे और आप पोस्ट का पता लगाने में सक्षम नहीं होंगे। डेस्क के खिलाफ कुछ बार मेरे सिर को तोड़ दिया जब तक कि मुझे यह महसूस नहीं हुआ।

इसके लिए वर्कअराउंड hidden प्रकार इनपुट भी जोड़ना है।

3

आप निर्भरता के बिना "विधि" एक सामान्य दिनचर्या (पोस्ट/प्राप्त) और मंच तत्वों के किसी भी अन्य नाम है चाहते हैं, तो मैं इस

<?php 
$isPostBack = false; 

$referer = ""; 
$thisPage = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 

if (isset($_SERVER['HTTP_REFERER'])){ 
    $referer = $_SERVER['HTTP_REFERER']; 
} 

if ($referer == $thisPage){ 
    $isPostBack = true; 
} 
?> 

अब की सिफारिश करता है, तो $ IsPostBack सच हो जाएगा अगर यह एक पोस्टबैक है, तो गलत नहीं है।

मुझे आशा है कि इससे

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