2011-09-03 16 views
6

मेरे पास एक चेकबॉक्स फॉर्म वाला एक HTML पृष्ठ है। इस फ़ॉर्म में एक PHP स्क्रिप्ट को इंगित करने की क्रिया है। PHP स्क्रिप्ट POST चर को ठीक से एकत्र करता है लेकिन जाहिर है कि एक खाली स्क्रीन डिस्प्ले है क्योंकि यह www.example/script.php पर निष्पादित होने पर जाता है।PHP रीडायरेक्ट, पोस्ट रखें

उन पदों को बरकरार रखने के दौरान मुझे अधिक फॉर्म जमा करने की जानकारी के लिए PHP को अन्य URL पर जाने के लिए कैसे मिलता है?

header() और metaredirect सब कुछ को रद्द करने के लिए और डेटा एकत्र नहीं लग रहे हैं ... मैं कैसे एकत्रित करते हैं कि पदों में डेटा और फिर स्वचालित रूप अपनी कार्रवाई के रूप में संलग्न एक PHP स्क्रिप्ट के साथ एक और रूप के लिए एक और एचटीएमएल पृष्ठ पर जाने?

धन्यवाद और खेद है अगर मैंने इसे भ्रमित तरीके से कहा।

+1

सत्र चर में 'POST' डेटा रखें। –

+1

मैं सिर्फ 'echo "

...
" 'लिखूंगा, लेकिन अगर मैं करने का बेहतर तरीका हूं तो मैं उत्सुक हूं। – JiminP

उत्तर

5

आप में $_POST चरों को संग्रहीत कर सकते हैं और फिर फॉर्म के अंतिम भाग को पूरा होने पर उन्हें सबमिट कर सकते हैं, या आप मध्यस्थ पृष्ठ को इन मानों को छुपा इनपुट के रूप में स्टोर कर सकते हैं और उन्हें अंतिम पृष्ठ पर सबमिट कर सकते हैं।

+0

मैं देख रहा हूं कि आप क्या कह रहे हैं और मैं सत्र करने का प्रयास कर सकता हूं ... लेकिन script.php निष्पादित होने के बाद मैं दूसरे पृष्ठ पर कैसे पहुंचूं? यह सिर्फ एक खाली पृष्ठ प्रदर्शित करता है ... मैं इसे किसी अन्य HTML पृष्ठ पर शूट करने के लिए कैसे प्राप्त करूं ताकि उपयोगकर्ता अधिक रूपों को भर सके? धन्यवाद! – Redirect42

+0

क्यों उस पृष्ठ पर फ़ॉर्म के अगले भाग को प्रदर्शित नहीं करते हैं? यदि आप वास्तव में उपयोगकर्ता को रीडायरेक्ट करना चाहते हैं, तो 'हेडर (' स्थान: www.mysite.com/nextpage.php ') जारी करें; ' –

+0

क्या मैं अगले फॉर्म पेज पर" अगला "सबमिट बटन लिंक कर सकता हूं और किसी भी तरह से फॉर्म की जानकारी POSTs में डाल दी जाएगी? क्या मुझे एक ही एचटीएमएल पेज पर php का उपयोग करने की आवश्यकता होगी या क्या मुझे अभी भी अपनी फाइल में मिल सकता है? – Redirect42

2

मुझे पता चला है कि यह कोड लगभग हर समय काम करता है (कुछ मामलों को छोड़कर जहां आप कस्टम पोस्ट डेटा का उपयोग करना चाहते हैं और क्लाइंट जावास्क्रिप्ट का समर्थन नहीं करता है)।

यह 307 Temporary Redirect का दुरुपयोग करके किया जाता है जो POST डेटा, या स्वयं सबमिट करने वाला जावास्क्रिप्ट फ़ॉर्म बनाकर लगता है।

हालांकि यह एक हैक है, अगर आप पोस्ट डेटा को आगे बढ़ाना चाहते हैं तो इसका उपयोग करें।

<?php 

function redirectNowWithPost($url, array $post_array = NULL) 
{ 
    if(is_null($post_array)) { //we want to forward our $_POST fields 
     header("Location: $url", TRUE, 307); 
    } elseif(! $post_array) { //we don't have any fields to forward 
     header("Location: $url", TRUE); 
    } else { //we have some to forward let's fake a custom post w/ javascript 
     ?> 
<form action="<?php echo htmlspecialchars($url); ?>" method="post"> 
<script type="text/javascript"> 
//this is a hack so that the submit function doesn't get overridden by a field called "submit" 
document.forms[0].___submit___ = document.forms[0].submit; 
</script> 
<?php print createHiddenFields($post_array); ?> 
</form> 
<script type="text/javascript"> 
document.forms[0].___submit___(); 
</script> 
     <?php 
    } 
    exit(); 
} 

function createHiddenFields($value, $name = NULL) 
{ 
    $output = ""; 
    if(is_array($value)) { 
     foreach($value as $key => $value) { 
      $output .= createHiddenFields($value, is_null($name) ? $key : $name."[$key]"); 
     } 
    } else { 
     $output .= sprintf("<input type=\"hidden\" name=\"%s\" value=\"%s\" />", 
      htmlspecialchars(stripslashes($name)), 
      htmlspecialchars(stripslashes($value)) 
     ); 
    } 
    return $output; 
} 
संबंधित मुद्दे