2014-10-04 79 views
0

我對重定向頁面此PHP功能:PHP重定向到onother頁面沒有空白頁

function _IS_Redirect_($url) { 
    if(!headers_sent()) { 
     //If headers not sent yet... then do php redirect 
     header('Location: '.$url); 
     exit; 
    } else { 
     //If headers are sent... do javascript redirect... if javascript disabled, do html redirect. 
     echo '<script type="text/javascript">'; 
     echo 'window.location.href="'.$url.'";'; 
     echo '</script>'; 
     echo '<noscript>'; 
     echo '<meta http-equiv="refresh" content="0;url='.$url.'" />'; 
     echo '</noscript>'; 
     exit; 
    } 
} 

現在,當我提交表單,如果表單沒有錯誤重定向到另一頁。現在我有2個問題:

  • 後提交和當頁面重定向我看到空白頁,然後頁面重定向!如何在不看到空白頁面的情況下重定向頁面?
  • 我需要在新頁面顯示成功消息。新頁面如何處理成功錯誤?

如何解決這個錯誤?

+0

爲什麼你還沒有在else部分使用PHP的重定向函數呢?爲什麼要去使用Javascript/HTML重定向? – addicted20015 2014-10-04 09:30:45

+0

@ addicted20015這是因爲你有時會得到一個錯誤'頭已經發送'。這是一個解決方法,錯誤 – SuperDJ 2014-10-04 09:34:39

+2

_how在不看到空白頁面的情況下重定向頁面?_這是不可能的。 JS重定向僅在頁面加載完成時完成。當頁面未加載時,您(訪客)會看到當前頁面呈現,即您的案例中的空白頁面。但是你可以插入一些文本到html,通知重定向正在進行中,例如, 「等一下」 – hindmost 2014-10-04 09:37:31

回答

0

如果您使用javascript或html刷新重定向,您將始終會看到一個空白頁面。最好的解決方案是在頁面上顯示一條消息,告訴他們很快就會被重定向。在你的情況下,顯示一個成功的消息,他們將被重定向。

理想情況下,您應該永遠不需要js或html重定向。如果這是一個問題,請找到一種重新排列代碼的方法,以便在運行其他代碼之前發生重定向。並確保沒有錯誤導致它。

至於顯示用戶被重定向到頁面上的成功消息,還有另一個地址爲Stack Overflow Answer。我認爲最簡單的解決方案是在URL的末尾添加一個GET變量。

header('Location: '.$url.'?success=1'); 

在重定向頁面

if (isset($_GET['success']) && $_GET['success'] == 1) 
{ 
    echo "Success"; 
} 

另一種解決方案是使用一個會話變量。請參閱上面的鏈接堆棧溢出問題。