2009-04-10 12 views
11

उपयोगकर्ता को PHP का उपयोग करके किसी अन्य HTML/PHP पृष्ठ पर रीडायरेक्ट करने से पहले कुछ निश्चित सेकंड के लिए पृष्ठ को कैसे रोकूं?PHP रीडायरेक्ट रोकें

+0

मैं समझ गया कभी नहीं क्यों मैं सेकंड के एक्स संख्या प्रतीक्षा करने के लिए तो वे मुझे एक और पृष्ठ पर रीडायरेक्ट कर सकते हैं क्यों मैं ऐसा होता है ? – Thomaschaaf

+0

कुछ ब्राउज़र बनें - या ब्राउजर की सेटिंग्स - रीडायरेक्ट को न दें ... और एक इंटरमीडिएट पेज दिखाना उपयोगकर्ता के लिए स्पष्ट रूप से है, तो यह समझने के बिना एकाधिक लोडिंग पेज .. एक्स (आमतौर पर 5) सेकेंड हैं उपयोगकर्ता संदेश पढ़ता है;) – Strae

+0

@ थॉमसाचाफ: कुछ कारण संभव हैं, ए) क्योंकि उन्हें एहसास नहीं है कि कोई ज़रूरत नहीं है, बी) विज्ञापन, जबकि उपयोगकर्ता 'इंतजार कर रहा है' वे एक ऐड देख सकते हैं और क्लिक कर सकते हैं, सी) अनुरूपता, हर कोई ऐसा करता है ताकि हर कोई एक अस्थायी पृष्ठ की अपेक्षा करता है (यानी मेरे मालिक ने मुझे एक कार्यान्वित किया है, भले ही हमारी साइट विज्ञापन राजस्व उत्पन्न न करे, क्योंकि वह इसे देखने के लिए इस्तेमाल किया गया था और सोचा था कि हमारे उपयोगकर्ता भी होंगे।) – Louis

उत्तर

1

अद्यतन: यह काम करता है, लेकिन इस स्थिति के लिए सबसे उपयुक्त समाधान नहीं हो सकता है। टिप्पणी देखो।

क्या आप यह देख रहे हैं कि आप क्या देख रहे हैं?

<?php 
sleep(5); 
header("Location: http://www.example.com/"); 
exit(); 
?> 
+1

क्या यह वास्तव में काम करते हो? मैंने सोचा कि नींद के साथ ब्राउज़र ब्राउज़र को केवल 5 सेकंड (आपके उदाहरण में) 5 पृष्ठ नहीं रखता है .. लेकिन आउटपुट – Strae

+0

@ डीएएनआईएलएल को फेंकने के बिना मैंने इसका परीक्षण नहीं किया है, तो आप सही हो सकते हैं यह सर्वर सेटिंग्स या उस समय/स्थान के आधार पर काम करता है जो आप इस कोड को कहते हैं। – Daan

+0

मैंने अभी परीक्षण किया है, यह काम करता है, लेकिन अन्य सभी आउटपुट को भी रोकता है .. नींद की नींद आती है() funcion पूरे php रेंडर को रोकता है, इसलिए इस तरह के मुद्दों के लिए imho का उपयोग नहीं किया जाना चाहिए – Strae

3

अन्य 2 विकल्प एक जावास्क्रिप्ट setTimeout() या टाइमआउट के साथ एक मेटा रिफ़्रेश टैग का उपयोग कर अनुप्रेषित कर रहे हैं।

15

कम तकनीक समाधान नहीं जावास्क्रिप्ट या यहाँ तक कि पीएचपी की आवश्यकता होती है:

<html> 
<head> 
    <title>Redirecting...</title> 
    <meta http-equiv="refresh" 
content="10;URL=http://www.newsite.com"> 
</head> 
<body> 
    You are being automatically redirected to a new location.<br /> 
    If your browser does not redirect you in 10 seconds, or you do 
    not wish to wait, <a href="http://www.newsite.com">click here</a>. 
</body> 
</html> 

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

यह समाधान उपयोगकर्ता को x सेकंड्स की प्रतीक्षा करने के बजाय तुरंत नए पृष्ठ पर जाने का विकल्प देता है जबकि उनके ब्राउज़र में कोई जानकारी प्रदर्शित नहीं होती है।

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

+0

ध्यान से रहें - कुछ ब्राउज़र (जैसे क्रोम और ओपेरा) इस तरह से सही तरीके से नहीं ले पाएंगे – Strae

+0

वास्तव में? मैं नहीं जानता था कि। खैर, कम से कम उनके पास उस पर क्लिक करने का लिंक है। – Calvin

+0

हां, मुझे आश्चर्य नहीं है कि ब्राउज़र जिसने इसे ठीक से संभाल नहीं किया है, सफारी, ओपेरा या क्रोम है .. मुझे याद है कि उनमें से 2 के रूप में .... लेकिन हो सकता है कि वे इस समस्या को – Strae

33

यह एक होना चाहिए काम करता है:

<?php 
header('Refresh: 5; URL=http://yoursite.com/page.php'); 
//other code 
?> 

और अपने उपयोगकर्ता जो कुछ भी तरह उत्पादन की आप चाहते हैं को देखने के लिए अनुमति देगा (आप एक्स सेकंड में भेज दिया जाता है, YERE क्लिक करता है, तो नहीं है, आदि ..)

+2

मुझे वास्तव में इस समाधान को मैंने जो पोस्ट किया उससे बेहतर है। +1 – Calvin

+0

यह हर ब्राउज़र के साथ काम नहीं करता है। – Gumbo

+1

वास्तव में? मैंने क्रोम, एफएफ, यानी ओपेरा और सफारी पर परीक्षण किया, सभी विंडोज़ वातावरण पर, और सभी एक जैसे काम करते हैं। आपने किस ओएस पर कोशिश की? किसी भी प्रकार की ब्राउज़र की सेटिंग नहीं हो सका? – Strae

8

कभी भी इस तरह नींद का उपयोग करें। मामूली लोड के तहत भी आपका सर्वर http कनेक्शन से बाहर हो जाएगा। सबसे खराब अगर आपका फ़ायरवॉल खत्म हो जाता है।

रीडायरेक्ट हेडर में देरी पैरामीटर बिल्कुल उसी कारण से बनाया गया है।

0

प्रयास करें:

<?php 
$url=base_url().'page_you_want_to_go_to' 
header('Refresh: X; URL=$url'); 
?> 

यह जब स्थानीय होस्ट और दूरस्थ सर्वर के बीच आदान प्रदान आप अतिरिक्त लचीलापन दे देंगे।

0

इसे हेडर में डालें।

<meta http-equiv="refresh" content="0.01;makensucces.html" /> 

जगह 0.01 पर आपको सेकंड रखना होगा, मैंने दशमलव संख्या का उपयोग किया है।

और makensucces.html के स्थान पर आपको अपनी इच्छित फ़ाइल को नाम देने की आवश्यकता है।

3

आप प्रतीक्षा करने के लिए और फिर वापस पिछले पृष्ठ पर यहाँ जाना चाहते हैं कैसे

$referrer = $_SERVER['HTTP_REFERER']; 

header ("Refresh: 2;URL='$referrer'"); 
संबंधित मुद्दे