2012-04-17 54 views
0

我花了兩天的時間嘗試在PHP中創建登錄/註銷面板。我正在使用一個PHP文件來檢查您是否已經通過會話變量登錄並回顯相應的「面板」。如何刷新使用JS,PHP或HTML的HTML頁面

我的問題是,登錄和註銷後,我必須刷新頁面,以便其他面板實際顯示。我發現在PHP中是通過header()完成的,但是我遇到了一個問題實現,因爲我總是得到頭文件已發送的東西。無論如何,在幾個小時後我決定使用javascript,所以我做了一個基本的redirect(url)函數,它需要一個URL並打開該頁面,我將$_SERVER["PHP_SELF"]傳遞給該頁面,因此我回到了同一頁面,基本上令人耳目一新。但現在我想,如果有人禁用JS,我會遇到問題。

任何替代品我不知道?在你的代碼的開始

ob_start(); 

: 乾杯

+0

是不是你已經刷新頁面,當有人登錄或退出,或你用阿賈克斯? – jeroen 2012-04-17 21:26:35

+1

你可以看看Meta Redirect的(HTML) - http://en.wikipedia.org/wiki/Meta_refresh – 2012-04-17 21:27:04

+0

順便說一下,如果你需要重定向並不應該給你php的頭部函數如果你的邏輯在最上面,輸出到瀏覽器的話,會有什麼問題。 – jeroen 2012-04-17 21:27:57

回答

2

JavaScript解決方案:

var newURL = "http://THE-URL.com"; 
document.location.href = newURL; 

location.reload(true); 

HTML解決方案:

<meta http-equiv="refresh" content="2;url=http://THE-URL.com"> 

PHP解決方案:

// taken from http://www.phpfreaks.com/forums/index.php?topic=228678.0 
function redirect($loc){ 
    echo "<script>window.location.href='".$loc."'</script>"; 
} 
function GoHere(){ 
    redirect('http://THE-URL.com'); 
} 

header("refresh: 2; url='http://THE-URL.com'"); 

用戶解決方案:

Press F5 
+1

大聲笑關於F5 – 2012-04-17 22:14:59

+0

所以我認爲這是真的:P – 2012-04-17 22:15:18

-1

針對已經發送了頭的問題,只是增加。

+0

解決底層結構問題通常會更好。 – ceejayoz 2012-04-17 21:34:12

+0

添加它在哪裏?關於之前的一切? – 2012-04-17 21:34:24

0

嘗試使您的註銷腳本是它自己的頁面。使註銷鏈接指向那裏,然後取消設置會話變量。您可以獲取頁面引用鏈接並將它們發回給它。

+0

「it」表示它們來自注銷的頁面。 – slowBear 2012-04-17 21:34:48

1

刪除空格,換行,開口<?php標籤之前或關閉?>標籤之後或其他垃圾解決頭已經發出已問題