2010-01-27 11 views
18

मेरी समस्या यह है कि बैक बटन ब्राउज़र को किसी पृष्ठ द्वारा बनाए गए पृष्ठ को समाप्त होने पर "पृष्ठ समाप्त हो गया" जैसा कुछ कहने का कारण बनता है।

उदाहरण:

  • पृष्ठ 1: लिंक के साथ उपयोगकर्ता की $ _POST अनुरोध और शो परिणाम (सूची प्राप्त करता है: खोज criterias ($ _POST अनुरोध, प्रपत्र पृष्ठ 2 के लिए अंक)
  • पृष्ठ 2 के साथ सबमिट किए गए फ़ॉर्म , पृष्ठ 3 के लिए अंक)
  • पृष्ठ 3: दिखाएँ उपयोगकर्ता प्रोफ़ाइल

अब जब वी आइसिटर ब्राउज़र में बैक बटन पर क्लिक करता है, यह "पेज की समयसीमा" जैसी कुछ दिखाएगा।

इसके बजाय पिछले पृष्ठ कोई चेतावनी (पृष्ठ 2, उपयोगकर्ता सूची के साथ)

कैसे अपने रणनीतियों इस व्यवहार से बचने के लिए कर रहे हैं के साथ दिखाया जाना चाहिए?

+2

वाह! मैं बस कुछ नया सीखता हूं: 'टैग' ऑपरेटर नहीं। xD –

उत्तर

23

आप सबमिट कर रहे हैं खोज मानदंडों के साथ के लिए एक, आप की कोशिश कर रहे कुछ डेटा मिलता है, कुछ को संशोधित नहीं।

तो, आपको HTTP GET विधि का उपयोग करना चाहिए, और पोस्ट नहीं: POST का उपयोग तब किया जाना चाहिए जब आप डेटा बनाने/संशोधित करना चाहते हैं, और जब आप कुछ डेटा लाने का इरादा रखते हैं तो GET का उपयोग किया जाना चाहिए।


या, अगर आपके पास कुछ बनाने/आपरेशन किया जा सकता है कि संशोधित:

  • प्रपत्र पहली पोस्ट पहले पृष्ठ
    • कि पेज (लेखन जैसे कुछ आपरेशनों करता है करने के लिए डेटाबेस में कुछ)
    • और फिर Location HTTP शीर्षलेख का उपयोग करके किसी अन्य पृष्ठ पर रीडायरेक्ट करता है।
  • यह अंतिम पृष्ठ है, यह जीईटी अनुरोधों का उपयोग कर ब्राउज़र द्वारा पूछताछ है, जो यूआरएल में प्राप्त पैरामीटर से प्राप्त डेटा प्रदर्शित करता है।

इस बारे में विकिपीडिया पर Post/Redirect/Get पृष्ठ देखें।

+0

प्लस, यदि आप जीईटी का उपयोग करते हैं, तो परिणाम पृष्ठ बुकमार्क करने योग्य –

+1

उत्कृष्ट उत्तर है। अधिक स्पष्ट और बिंदु नहीं हो सका। अनुरोध से भी अधिक देना; विकल्प और अधिक अंतर्दृष्टि। धन्यवाद। – Cudos

+0

@ कुडोस: आपका स्वागत है :-) मज़े करो! –

1

आपके द्वारा पोस्ट की गई स्क्रिप्ट में Location शीर्षलेख भेजें, जो बाद में आने वाले पृष्ठ पर इंगित करता है।

+0

इसके लिए HTTP स्थिति कोड 303 का उपयोग करें। यदि वर्तमान दस्तावेज के अनुसार स्पष्ट रूप से निर्दिष्ट नहीं किया गया है तो PHP 302 पर डिफ़ॉल्ट हो जाता है। – MattBianco

14

Post/Redirect/Get (PRG) Pattern का उपयोग करें।

PRG Pattern

+0

यह अच्छा है। लेकिन यह पृष्ठ अनुरोधों की संख्या को दोगुना करता है ... – BurninLeo

1

खोज के लिए POST का उपयोग न करें। खोज सुरक्षित रूप से जीईटी के साथ किया जा सकता है क्योंकि इससे कुछ भी नहीं बदलेगा।

1

यह PHP और IE8 पर लागू होता है।

न केवल आपको निजी तौर पर कैशिंग सेट करना होगा, लेकिन आपको 4 कैशिंग हेडर को हटाना होगा और यह केवल PHP 5.3 के साथ ही किया जा सकता है। PHP 5 में।2 यदि आप ज़ेंड फ्रेमवर्क की setHeader() विधि का उपयोग करते हैं तो आप केवल 4 शीर्षलेख रिक्त मानों पर सेट कर सकते हैं। कुछ कारणों से IE8 पर 4 हेडर मानों को खाली मानों पर सेट करने के लिए पर्याप्त नहीं है। PHP 5.3:

header_remove("Expires"); 
    header_remove("Cache-Control"); 
    header_remove("Pragma"); 
    header_remove("Last-Modified"); 
0

के लिए कोड यहां आप ऐसा करने के लिए सत्र का उपयोग कर सकते हैं।

उदाहरण के लिए।

$ _SESSION ['name'] = $ _POST ['name'];

स्मृति उपयोग को अनुकूलित करने के लिए प्रक्रिया पूर्ण होने के बाद अपने चर को अनसेट करने के लिए Remeber।